我有一個很奇怪的崩潰,不知道我做錯了什麼。這是代碼。MagicalRecord在保存圖像文件路徑時出現奇怪的崩潰
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
Contact *contact = [Contact MR_findFirstByAttribute:kCoreData_Contact_ID withValue:strContactID inContext:localContext];
strFilePath = [Util buildFilePathForImageWithID:contact.c_id withKey:@"ContactPicture"];
contact.c_photoFilePath = strFilePath;
} completion:^(BOOL success, NSError *error) {
}];
Contact *contact = [Contact getContactWithID:strContactID];
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:contact.c_photoURL]];
[data writeToFile:strFilePath atomically:YES];
UIImage *image = [UIImage imageWithData:data];
UIImage *imgToShow = nil;
if (image)
{
imgToShow = [SquareAndMask maskImage_72:image];
}
else
{
imgToShow = [UIImage imageNamed:@"add_rv_photo"];
}
dispatch_async(dispatch_get_main_queue(), ^{
//> Image downloaded, load it
[self.imgViewPhoto setImage:imgToShow];
self.imgViewStatusLevel.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@_btn",contact.c_status]];
});
});
現在有在我的腦海關於與MR多線程一些混亂,這就是爲什麼上面的代碼可能有問題。但是,我不明白爲什麼它崩潰。
注:我在模擬器上測試,在iPad mini視網膜上測試,對我而言,沒有崩潰。我的客戶正在iPad 3,4上進行測試,並且在運行這部分代碼時他已經崩潰了。
我在做這段代碼:我有一個Contact對象,它保存了照片的url和filePath。所以第一次,沒有圖像保存在本地,我運行這個代碼,下載圖像,並保存在本地,我也保存了一個c_photoFilePath,所以下一次我知道從哪裏拍攝該圖像。
我symbolicated一些崩潰日誌,這是我得到了什麼:
而且,一旦我在模擬器得到這個,機器人不知道這是否是與此相關的崩潰:
CoreData: error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. -[__NSCFSet addObject:]: attempt to insert nil with userInfo (null)
我接受上述代碼的任何詛咒:)只是請幫助我。
謝謝,你的建議幫助我走上了正確的軌道。非常感謝你。 –