2011-09-14 39 views
0

保存核心数据上下文时,出现以下错误。 我真的不知道从哪里开始看,如果你有一个领导... 谢谢。CoreData误解对象类

PS:我检查了.h文件中声明的所有类型与我的数据模型中的相同。

编辑:我覆盖了NSDate类intValue。现在我看到timeIntervalSinceReferenceDate在NSNumber上被调用。我试图在那里放置一个断点,但它没有提供任何信息(只保存:在我的代码之前)。我还发现了一种方法来知道谁是那些着名的对象:NSDate是一个对象(称为lastCompute)与NSNumber(称为sleep)在同一个类中。它们的类型匹配在.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

一些代码在哪里实际上可以节省? – Eimantas

+0

是的,没有人可以真正解释这个以及代码。 – darksky

+0

- [__ NSDate intValue]:无法识别的选择器SAYS IT ALL。 NSDate对象没有intValue函数。 – Zigglzworth

回答

1

我想我解决了可供您使用的工具问题。
我试图删除NSDate属性。一个新的错误出现了(解释here)。所以我检查了我的所有[NSNumber numberWithSomething:],并且发现我将用int创建的数字放在数据模型中声明为float的属性中。
我修复了所有这些错误,重新添加了NSDate,现在我的应用程序不再崩溃。我希望这是解决方案,即使它与在NSDate上调用intValue无关。

2

因为你调用该方法的intValue的NSDate对象[NSDate的日期]你得到这个错误。 如果你需要做的日期作为时间间隔的东西,不是使用

[[NSDate date] timeIntervalSince1970] 

,或者如果你需要比较两个日期,不是做这样的事情:

NSDate *startDate = (...some start date); 
NSDate *endDate = (...some end date); 

NSTimeInterval intervalInSeconds = [endDate timeIntervalSinceDate:startDate]; 
+0

我没有尝试任何这一点。我在我的模型中存储日期和数字,我不认为这应该是一个问题。我的问题是找到谁被称为intValue,我知道哪个对象,但我不知道这个对象在我的代码中。你需要更多的信息来帮助我吗? –

0

因为你改了属性和你期望的操作没有正确执行,这听起来像你没有正确处理数据模型的版本控制。

确保你刷上了this。更妙的是,如果您的应用程序尚未发布给公众或测试人员和QA人员,那么您可以从一个全新的数据库开始,而不必担心版本化和迁移。

虽然从头开始是讨巧,如果你计划在将来使用CoreData你应该阅读并理解版本的想法和XCode中4

+0

我删除了应用程序并重新安装了它(多次)。我仍然有同样的问题。 –