保存核心数据上下文时出现以下错误。 我真的不知道从哪里开始看,如果你有一个领先... 谢谢。
PS:我检查过.h文件中声明的所有类型都与我的数据模型中的相同。
编辑:我在一个NSDate类别中覆盖了intValue。现在我看到在NSNumber上调用timeIntervalSinceReferenceDate。我试图在那里放一个断点,但它没有提供任何信息(只保存:在我的代码之前)。我还发现了一种知道谁是那些着名对象的方法:NSDate是与NSNumber(称为sleep)在同一类中的对象(称为lastCompute)。它们的类型匹配.h和数据模型中声明的类型。但它没有给我一个提示,说明为什么CoreData在NSDate上调用intValue。任何铅?感谢-[__NSDate intValue]: unrecognized selector sent to instance 0x6a3cba0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDate intValue]: unrecognized selector sent to instance 0x6a3cba0'
*** Call stack at first throw:
(
0 CoreFoundation 0x01ca35a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x01df7313 objc_exception_throw + 44
2 CoreFoundation 0x01ca50bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x01c14966 ___forwarding___ + 966
4 CoreFoundation 0x01c14522 _CF_forwarding_prep_0 + 50
5 CoreData 0x00955b50 -[NSSQLiteConnection execute] + 2320
6 CoreData 0x009a7ebd -[NSSQLiteConnection updateRow:] + 365
7 CoreData 0x009a6e64 -[NSSQLConnection performAdapterOperations:] + 180
8 CoreData 0x009a6b0e -[NSSQLCore _performChangesWithAdapterOps:] + 494
9 CoreData 0x009a55ea -[NSSQLCore performChanges] + 410
10 CoreData 0x0099f038 -[NSSQLCore saveChanges:] + 216
11 CoreData 0x0095d199 -[NSSQLCore executeRequest:withContext:error:] + 409
12 CoreData 0x00a0d70b -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 3691
13 CoreData 0x00995948 -[NSManagedObjectContext save:] + 712
答案 0 :(得分:2)
您收到该错误是因为您在 NSDate 对象 [NSDate日期] 上调用 intValue 方法。 如果您需要以日期作为时间间隔,而不是使用
[[NSDate date] timeIntervalSince1970]
或者如果您需要比较两个日期,请执行以下操作:
NSDate *startDate = (...some start date);
NSDate *endDate = (...some end date);
NSTimeInterval intervalInSeconds = [endDate timeIntervalSinceDate:startDate];
答案 1 :(得分:1)
我想我解决了这个问题 我试图删除NSDate属性。出现了一个新错误(解释here)。所以我检查了所有[NSNumber numberWithSomething:],我发现我在数据模型中声明为float的属性中使用int创建的数字。 我修复了所有这些错误,重新添加了NSDate,现在我的应用程序不再崩溃了。我希望这是解决方案,即使它与在NSDate上调用intValue无关。
答案 2 :(得分:0)
由于您更改了属性并且您所期望的操作未正确执行,因此听起来您没有正确处理数据模型的版本化。
确保你清楚this。更好的是,如果您的应用程序尚未向公众或一组测试人员和QA人员发布,那么您可以从一个全新的数据库开始,而不必担心版本控制和迁移。
虽然从头开始是一个简单的方法,但如果您计划将来使用CoreData,您应该真正阅读并理解XCode 4中可用的版本控制思想和工具。