gpt4 book ai didi

iphone - 保存时出现核心数据 Unresolved 错误

转载 作者:行者123 更新时间:2023-12-03 18:28:42 27 4
gpt4 key购买 nike

我在保存核心数据上下文时遇到错误,日志如下:

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];

有时,我可能会将 productListproduct 对象(均为 NSManagedObject 类型)传递给其他 Controller ,始终使用在属性中分配,并且永远不要保留productList 是一个对象,可能包含许多 product 对象。

能够创建新对象(NSManagedObject),但是当涉及到删除它们时,我收到上面提到的错误。在模拟器中运行应用程序时,我密切关注 sqlite 文件。尝试删除对象(上面的代码)后,我注意到 .sqlite 文件被删除。

我已经创建了一些 Core Data iphone 应用程序,没有任何问题,但我似乎在这里遇到了问题。我不相信我做了任何不寻常的事情,但也许我错过了一个小细节,但我不知道是什么!

为什么我的 .sqlite 文件被删除并导致保存时出现此错误消息?

如何找到更有用的错误消息,以便确定此错误的原因?

最佳答案

发现了问题,但我不确定为什么它会解决它:

在删除/删除对象之前,我会删除与其关联的图像(存储在文档的目录中)。

默认情况下图像没有值(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

如果我在尝试像这样删除图像之前进行 nil 检查,那么当我删除托管对象本身时,我不会收到错误:

    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

我猜想当产品图片为零时尝试访问它会使其全部无效。

关于iphone - 保存时出现核心数据 Unresolved 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7109880/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com