0

我有一个核心数据应用程序有一个导致应用程序崩溃的错误,我还没有找到它的原因。崩溃的结果之一是下次启动应用程序时,它无法打开应用程序之前使用的持久存储。该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

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

提前谢谢了。

4

2 回答 2

1

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

显而易见的第一步是记录 URL 并查看商店是否真的在那个位置。

于 2010-07-06T22:10:58.780 回答
0

画,

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

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

干杯。

于 2010-07-06T19:38:44.110 回答