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