时间:2010-07-06 18:58:59

标签: iphone cocoa cocoa-touch core-data nserror

我有一个Core Data应用程序,它有一个导致应用程序崩溃的错误,我还没有找到原因。崩溃的结果之一是,下次启动应用程序时,它无法打开先前应用程序使用的持久性存储。 addPersistentStoreWithType:方法返回以下错误:

NSUnderlyingException = Error validating url for store;

当然,它无法检索以前由应用程序存储的任何对象。有谁知道什么可能导致应用程序无法再找到其持久存储?

导致应用程序在所有这一切发生之前关闭的崩溃会产生以下崩溃日志:

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

Thread 0 Crashed:
0   libSystem.B.dylib              0x0007e98c __kill + 8
1   libSystem.B.dylib              0x0007e97c kill + 4
2   libSystem.B.dylib              0x0007e96e raise + 10
3   libSystem.B.dylib              0x0009361a abort + 34
4   libstdc++.6.dylib              0x000453b0 __gnu_cxx::__verbose_terminate_handler() + 376
5   libobjc.A.dylib                0x00005858 _objc_terminate + 104
6   libstdc++.6.dylib              0x00043776 __cxxabiv1::__terminate(void (*)()) + 46
7   libstdc++.6.dylib              0x000437ca std::terminate() + 10
8   libstdc++.6.dylib              0x00043896 __cxa_throw + 74
9   libobjc.A.dylib                0x00004714 objc_exception_throw + 64
10  Foundation                     0x000013c2 __NSThreadPerformPerform + 570
11  CoreFoundation                 0x00056a96 CFRunLoopRunSpecific + 1834
12  CoreFoundation                 0x00056356 CFRunLoopRunInMode + 42
13  GraphicsServices               0x00003b2c GSEventRunModal + 108
14  GraphicsServices               0x00003bd8 GSEventRun + 56
15  UIKit                          0x00002768 -[UIApplication _run] + 384
16  UIKit                          0x0000146c UIApplicationMain + 688
17  Meetchu                        0x00002568 main (main.m:14)
18  Meetchu                        0x0000251c start + 32

我无法弄清楚这些信息发生了什么。任何人都可以帮助解决这些错误吗?

非常感谢提前。

2 个答案:

答案 0 :(得分:1)

如果您将实际的URL存储到应用程序目录中的文件而不是每次相对于app目录重新生成它,那么无效的URL是模拟器/设备将应用程序目录的名称更改为一个随机的UUID。它有时会对崩溃做出反应。

显而易见的第一步是记录URL并查看商店是否实际位于该位置。

答案 1 :(得分:0)

德鲁,

在没有看到一些代码的情况下,我可以告诉你,当我第一次使用Core Data时,给我的一个痛苦来源就是对你的模型进行版本控制。如果您以任何方式更改了托管对象模型,这将导致您的应用程序崩溃,而无需使用某些版本控制(即轻量级)代码。

这可能不是您的问题的根源,但您可以尝试的一件事是从iPhone模拟器中删除您的应用程序或使用iPhone模拟器菜单中的“重置内容和设置”。如果这可以解决问题,那么您正在查看迁移问题。

干杯。