2010-09-10 102 views
0

我有2个应用程序使用核心数据与sqlite持久性存储。我有一个数据加载器例程,我运行它来从csv文件填充CoreData DB。在开发过程中,当我的数据发生变化时,我会从模拟器运行例程来生成新的数据库并将新数据库复制到项目中。XCode 3.2.4 iOS 4.1(最终)和CoreData在模拟器崩溃

这对XCode 3.2.3和iOS 4.0来说工作得非常好。它甚至可以在XCode 4 Preview 2和3中运行。我只安装了最终版本的XCode 3.2.4和iOS 4.1。现在我的db加载程序失败。它没有给我留言,没有警告,没有任何东西。它只是转储到弹簧板,XCode给我“调试终止”消息。它会在加载过程中的不同时间失败,所以我很确定这不是数据问题。我没有做任何线程。我认为这个问题与Core Data或者sqlite有关,因为那是崩溃发生的时候,但是没有任何信息报告我无法确定。

我卸载了所有东西。 Xcode 3.2.4,Xcode 4预览(假设它是由XCode 4引起的问题)并重新安装XCode 3.2.3/iOS 4.0。事情恢复正常。完成一些工作后,我试图再次升级到3.2.4/iOS 4.1。我卸载了3.2.3/iOS 4.0,重新启动。安装3.2.4/iOS 4.1,重新启动并重试。没有运气。同样的严重崩溃。与原因一样,缺少消息传递。

我已经确定,这只发生在XCode 3.2.4的模拟器中,该设备和XCode 4和3.2.3一样好。我试过玩目标操作系统选择(3.0,3.1,4.0,4.1)。我已经厌倦了从GCC 4.0,GCC 4.2,LLVM GCC 4.2,LLVM 1.5调整编译器。我已经尝试将基础SDK设置为iOS模拟器4.1。有趣的是,它使用3.2 SDK时可以在iPad模拟器中工作。所以我至少把这当作解决方法。

我想有3个问题之一:

  1. 与我的代码的问题已被发现的3.2.4。

  2. 3.2.4中的错误。

  3. 我错过了一个配置问题。

如果任何人有任何疑难解答的想法或答案,我很乐意听到他们。自V 2.1以来,我一直在做iOS全职工作,并且我深陷困境。

由于提前,

回答

0

我想通了我的问题。它看起来像CoreData/Sqlite连接是一个完全的红鲱鱼。在阅读完SO之后,我使用了OSX的控制台应用程序,并收到了一条关键消息“无法及时启动”,该消息未在XCode的调试器控制台中显示。

由于实质上是超时错误,看起来进程正在被杀死。 iPhone会杀死一个需要很长时间才能完成“didFinishLaunching”的应用程序。这就是我踢数据加载例程的地方。新版本的XCode必须调整它的超时值。

因此,如果XCode没有告诉你所有的事情,并留意那些红鲱鱼,我的外卖给OSX的控制台一个镜头。

0

保存managedObjectContext时,当我升级我碰到了麻烦在模拟器。我终于删除了我的sqlite CoreData存储文件,并没有遇到类似的问题。尝试删除您的数据文件(并删除之前保存它的副本,看看有什么不同)。

+0

对核心数据问题进行故障排除时的一个很好的提示。这是我在处理Core Data奇怪问题时尝试的第一件事情之一。 – TheGeoff 2010-09-13 04:19:42