0
我在我的UITableViewController子类下面的方法:程序接收到的信号:EXC_BAD_ACCESS
-(void)populateDataStorage{
NSString *path = [[NSBundle mainBundle] pathForResource:@"FakeData" ofType:@"plist"];
if(path){
NSArray *plistData = [[NSArray alloc] initWithContentsOfFile:path];
NSEnumerator *enumerator = [plistData objectEnumerator];
NSArray *personResults;
Photo *photo;
Person *person;
id currItem = [enumerator nextObject];
while (currItem != nil) {
photo = (Photo *)[NSEntityDescription insertNewObjectForEntityForName:@"Photo" inManagedObjectContext: [[FlickrFetcher sharedInstance] managedObjectContext]];
photo.name = [currItem objectForKey:@"name"];
photo.path = [currItem objectForKey:@"path"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@", [currItem objectForKey:@"user"]];
personResults = [[FlickrFetcher sharedInstance] fetchManagedObjectsForEntity:@"Person" withPredicate:predicate];
if ([personResults count] > 0) {
person = [personResults objectAtIndex:0];
}
else {
person = (Person *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:[[FlickrFetcher sharedInstance] managedObjectContext]];
person.name = [currItem objectForKey:@"user"];
}
photo.person = person;
[person addPhotosObject:photo];
NSLog(@"Photo %@ added for user %@", photo.name, person.name);
currItem = [enumerator nextObject];
}
[plistData release];
}
}
而且我把它在我的应用程序didFinishLaunchingWithOptions方法在我的AppDelegate,方法也是相同AppDelegate,当它被调用时,我得到它在调试时出现的错误,如果我不调试这条线,它将运行该方法并加载没有问题。如果我根本不调试,它将不会调用该方法。
编辑:根据答案更改了代码问题仍然保持不变,如果我只是运行没有任何反应,但在调试时出现错误。当我调试整个方法时,不显示错误。
我修改了代码并更新了我的帖子,问题仍然存在 – 8vius
您是如何修改代码的?你可以添加更新的代码到你的文章吗? – highlycaffeinated
我所做的是在if语句的两种情况下设置person对象,以更正您所说的内容,这样,当我访问它的name属性时,它总是设置为 – 8vius