【问题标题】:Why doesn't Core Data just save all that works and ignore the empty entity?为什么 Core Data 不只是保存所有工作并忽略空实体?
【发布时间】:2011-12-24 04:03:36
【问题描述】:

鉴于以下控制台输出,为什么我的核心数据保存失败? biz 实体似乎是空的。我有 20 个“biz”实体,只有 1 个很可能是空的。为什么整个保存失败?

为什么 Core Data 不直接保存所有工作并忽略空实体?相反,它返回Error in saving Error in Saving Error Domain=NSCocoaErrorDomain Code=1570

这是我的控制台日志:

2011-11-08 11:37:49.059 BadgerNew[3808:4503] <0x38a520 GrabClass.m:(509)> Biz to save <Business: 0x32e2550> (entity: Business; id: 0x32b7dd0 <x-coredata:///Business/t069264E3-D89C-4D4A-92D9-8A190B7CF255489> ; data: {
    Bookmark = 0;
    Building = nil;
    City = "0x32f06e0 <x-coredata:///City/t069264E3-D89C-4D4A-92D9-8A190B7CF255396>";
    Distance = "484.0799568283629";
    Districts =     (
        "0x326b7a0 <x-coredata:///District/t069264E3-D89C-4D4A-92D9-8A190B7CF255398>"
    );
    Email = nil;
    ID = 22302;
    Images =     (
        "0x32df100 <x-coredata:///Image/t069264E3-D89C-4D4A-92D9-8A190B7CF255494>"
    );
    InBuildingAddress = "Blok De Unit 1-2";
    LatitudeLongitude = "0x32755f0 <x-coredata:///LatitudeLongitude/t069264E3-D89C-4D4A-92D9-8A190B7CF255495>";
    Like = 0;
    OpeningHour = nil;
    Phones =     (
        "0x32def60 <x-coredata:///Phone/t069264E3-D89C-4D4A-92D9-8A190B7CF255493>",
        "0x32e2d60 <x-coredata:///Phone/t069264E3-D89C-4D4A-92D9-8A190B7CF255490>",
        "0x32dea90 <x-coredata:///Phone/t069264E3-D89C-4D4A-92D9-8A190B7CF255491>",
        "0x32decb0 <x-coredata:///Phone/t069264E3-D89C-4D4A-92D9-8A190B7CF255492>"
    );
    Price = 0;
    Promotions =     (
    );
    Rating = "0x3275000 <x-coredata:///Rating/t069264E3-D89C-4D4A-92D9-8A190B7CF255496>";
    Reviews =     (
    );
    Street = "Jl. Panjang Kedoya No. 1";
    Tags =     (
    );
    TimeStamp = nil;
    Title = "Bank BNI Graha Elok Mas";
    URLs =     (
    );
    Website = nil;
    Zip = 11520;
    pinAndLineNumber = 0;
})
2011-11-08 11:37:49.095 BadgerNew[3808:4503] <0x427c0 TreadClass.m:(82)> Error in Saving Error Domain=NSCocoaErrorDomain Code=1570 "The operation couldn’t be completed. (Cocoa error 1570.)" UserInfo=0x31fbd0 {NSValidationErrorObject=<Business: 0x328c660> (entity: Business; id: 0x332840 <x-coredata:///Business/t069264E3-D89C-4D4A-92D9-8A190B7CF255441> ; data: {
    Bookmark = 0;
    Building = nil;
    City = nil;
    Distance = "-1";
    Districts =     (
    );
    Email = nil;
    ID = "";
    Images =     (
    );
    InBuildingAddress = nil;
    LatitudeLongitude = nil;
    Like = 0;
    OpeningHour = nil;
    Phones =     (
    );
    Price = 0;
    Promotions =     (
    );
    Rating = nil;
    Reviews =     (
    );
    Street = nil;
    Tags =     (
    );
    TimeStamp = nil;
    Title = nil;
    URLs =     (
    );
    Website = nil;
    Zip = nil;
    pinAndLineNumber = 0;
}), NSValidationErrorKey=Title, NSLocalizedDescription=The operation couldn’t be completed. (Cocoa error 1570.)}
2011-11-08 11:37:51.307 BadgerNew[3808:1403] <0x427c0 TreadClass.m:(82)> Error in Saving Error Domain=NSCocoaErrorDomain Code=1570 "The operation couldn’t be completed. (Cocoa error 1570.)" UserInfo=0x322ca30 {NSValidationErrorObject=<Business: 0x323f510> (entity: Business; id: 0x323f6a0 <x-coredata:///Business/t069264E3-D89C-4D4A-92D9-8A190B7CF25511> ; data: {
    Bookmark = 0;
    Building = nil;
    City = nil;
    Distance = "-1";
    Districts =     (
    );
    Email = nil;
    ID = "";
    Images =     (
    );
    InBuildingAddress = nil;
    LatitudeLongitude = nil;
    Like = 0;
    OpeningHour = nil;
    Phones =     (
    );
    Price = 0;
    Promotions =     (
    );
    Rating = nil;
    Reviews =     (
    );
    Street = nil;
    Tags =     (
    );
    TimeStamp = nil;
    Title = nil;
    URLs =     (
    );
    Website = nil;
    Zip = nil;
    pinAndLineNumber = 0;
}), NSValidationErrorKey=Title, NSLocalizedDescription=The operation couldn’t be completed. (Cocoa error 1570.)}
2011-11-08 11:37:53.284 BadgerNew[3808:1b03] <0x427c0 TreadClass.m:(82)> Error in Saving Error Domain=NSCocoaErrorDomain Code=1570 "The operation couldn’t be completed. (Cocoa error 1570.)" UserInfo=0x3a4c90 {NSValidationErrorObject=<Business: 0x32aee0> (entity: Business; id: 0x300480 <x-coredata:///Business/t069264E3-D89C-4D4A-92D9-8A190B7CF255220> ; data: {
    Bookmark = 0;
    Building = nil;
    City = nil;
    Distance = "-1";
    Districts =     (
    );
    Email = nil;
    ID = "";
    Images =     (
    );
    InBuildingAddress = nil;
    LatitudeLongitude = nil;
    Like = 0;
    OpeningHour = nil;
    Phones =     (
    );
    Price = 0;
    Promotions =     (
    );
    Rating = nil;
    Reviews =     (
    );
    Street = nil;
    Tags =     (
    );
    TimeStamp = nil;
    Title = nil;
    URLs =     (
    );
    Website = nil;
    Zip = nil;
    pinAndLineNumber = 0;
}), NSValidationErrorKey=Title, NSLocalizedDescription=The operation couldn’t be completed. (Cocoa error 1570.)}
2011-11-08 11:37:56.480 BadgerNew[3808:4403] <0x427c0 TreadClass.m:(82)> Error in Saving Error Domain=NSCocoaErrorDomain Code=1570 "The operation couldn’t be completed. (Cocoa error 1570.)" UserInfo=0x3c5e10 {NSValidationErrorObject=<Business: 0x32d4530> (entity: Business; id: 0x3d0240 <x-coredata:///Business/t069264E3-D89C-4D4A-92D9-8A190B7CF255296> ; data: {
    Bookmark = 0;
    Building = nil;
    City = nil;
    Distance = "-1";
    Districts =     (
    );
    Email = nil;
    ID = "";
    Images =     (
    );
    InBuildingAddress = nil;
    LatitudeLongitude = nil;
    Like = 0;
    OpeningHour = nil;
    Phones =     (
    );
    Price = 0;
    Promotions =     (
    );
    Rating = nil;
    Reviews =     (
    );
    Street = nil;
    Tags =     (
    );
    TimeStamp = nil;
    Title = nil;
    URLs =     (
    );
    Website = nil;
    Zip = nil;
    pinAndLineNumber = 0;
}), NSValidationErrorKey=Title, NSLocalizedDescription=The operation couldn’t be completed. (Cocoa error 1570.)}

【问题讨论】:

标签: objective-c core-data


【解决方案1】:

这个previous answer 解释得最好。引用已接受的答案:

这意味着有一个强制属性被赋值为 nil。无论是在 您的 *.xcodatamodel 选中“可选”框或当您保存到 managedObjectContext 确保您的属性已填写。

【讨论】:

  • 我知道。但是,如果我想保存 100 个 biz,其中一个没有验证,为什么其余的没有保存?
  • 因为它没有。我完全同意它应该 - 但这不是它的工作方式。如果您希望它像那样工作,那么您应该提交一个错误报告,或者将该属性设为可选并实现一个自定义的将保存方法来满足您的需要。
  • 没有。我只是想确保它是这样的:)。令人惊讶。它在哪里说它是这样工作的?当然可以一一保存。
猜你喜欢
  • 2018-04-11
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 2010-09-30
  • 2015-07-15
  • 2023-03-04
  • 1970-01-01
  • 2018-01-16
相关资源
最近更新 更多