jam*_*mes 11 iphone cocoa-touch core-data
保存核心数据上下文时出错,这是日志:
Unresolved error Error Domain=NSCocoaErrorDomain Code=134030 "The operation couldn’t be completed. (Cocoa error 134030.)" UserInfo=0x1937a0 {NSAffectedStoresErrorKey=(
    "<NSSQLCore: 0x156410>"
), NSUnderlyingError=0x181a60 "The operation couldn’t be completed. (Cocoa error 4.)", NSFilePath=/var/mobile/Applications/appid/Documents/appname.sqlite}, {
    NSAffectedStoresErrorKey =     (
        "<NSSQLCore: 0x156410>"
    );
    NSFilePath = "/var/mobile/Applications/appid/Documents/appname.sqlite";
    NSUnderlyingError = "Error Domain=NSCocoaErrorDomain Code=4 \"The operation couldn\U2019t be completed. (Cocoa error 4.)\" UserInfo=0x181a30 {NSUnderlyingError=0x108ab0 \"The operation couldn\U2019t be completed. No such file or directory\"}";
}
删除和删除对象后,我收到此错误:
[productList removeMProductObject:product];
[[delegate managedObjectContext] deleteObject:product];
[delegate saveContext];
我还注意到我也收到以下场景(调试)的错误:
1.
    [productList removeMProductObject:product];
    [delegate saveContext];
2.
    [[delegate managedObjectContext] deleteObject:product];
    [delegate saveContext];
3.
    [[delegate managedObjectContext] deleteObject:product];
    [productList removeMProductObject:product];
    [delegate saveContext];
4.
    [[delegate managedObjectContext] deleteObject:product];
    [delegate saveContext];//error
    [productList removeMProductObject:product];
    [delegate saveContext];
5.
    [productList removeMProductObject:product];
    [delegate saveContext];//error
    [[delegate managedObjectContext] deleteObject:product];
    [delegate saveContext];
有时,我可以将一个productList或一个product对象(两种类型NSManagedObject)传递给其他控制器,总是assign在属性中使用,永远不会retain.productList是一个可能包含许多product对象的对象.
我是能够创建新的对象(NSManagedObject),但是当涉及到删除它们,我得到上述错误.在模拟器中运行应用程序时,我会密切关注sqlite文件.在尝试删除对象(上面的代码)后,我注意到.sqlite文件已被删除.
我已经创建了一些Core Data iphone应用程序没有问题,但我似乎在这里有一个问题.我不相信我做了一些与众不同的事情,但也许我错过了一个小细节,但我不知道是什么!
为什么我的.sqlite文件被删除并导致保存时出现此错误消息?
如何找到更有用的错误消息,以便我可以确定此错误的原因?
jam*_*mes 14
发现问题,但我不确定它为什么修复它:
在我删除/删除对象之前,我将删除与其关联的图像(存储在文档的目录中).
默认情况下图像没有值(nil),但我会尝试删除它:
    NSError *deleteError = nil;
      [[NSFileManager defaultManager] removeItemAtPath:[DOCUMENTS_DIRECTORY stringByAppendingPathComponent:product.mPictureName] error:&deleteError];
#ifdef DEBUG_MODE
      if(deleteError) {
        NSLog(@"Error deleting image: %@", [deleteError description]);
      }
      else {
        NSLog(@"Image %@ deleted.", product.mPictureName);
      }
#endif
如果我在尝试删除这样的图像之前做了一个零检查,当我删除托管对象本身时,我没有得到任何错误:
    NSString *imageName = product.mPictureName;
    if(imageName) {
      NSError *deleteError = nil;
      [[NSFileManager defaultManager] removeItemAtPath:[DOCUMENTS_DIRECTORY stringByAppendingPathComponent:imageName] error:&deleteError];
#ifdef DEBUG_MODE
      if(deleteError) {
        NSLog(@"Error deleting image: %@", [deleteError description]);
      }
      else {
        NSLog(@"Image %@ deleted.", imageName);
      }
#endif
    }
    ...
    //delete NSManagedObject and save
我想当它是零时试图访问产品的图片使它全部无效.
| 归档时间: | 
 | 
| 查看次数: | 10021 次 | 
| 最近记录: |