iPhone模拟器5.1中使用UIManagedDocument和Xcode 4.5存在Bug

9
我有一个非常奇怪的问题,我花了两天时间来解决...我有一段代码,在Xcode 4.4和iOS 5.1模拟器下使用5.1 SDK完美运行。但是在我升级到Xcode 4.5和6.0 SDK之后,我的代码在iOS 5.1模拟器中停止工作...尽管它在iOS 6.0模拟器中运行得非常好。是否有任何我不知道的变化?
这是代码:
- (void)useDocument
{
    if (![[NSFileManager defaultManager] fileExistsAtPath:[self.database.fileURL path]]){
        [self.database saveToURL:self.database.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){
            [self setupFetchedResultsController];
    }];
    } else if (self.database.documentState == UIDocumentStateClosed){
        [self.database openWithCompletionHandler:^(BOOL success){
            [self setupFetchedResultsController];
        }];          
    } else if (self.database.documentState == UIDocumentStateNormal) {
        [self setupFetchedResultsController];
    }
}

由于某些原因,saveToURL和openWithCompletionHandler在5.1模拟器中从不返回。有人知道为什么吗?

1
我很高兴找到了你的问题,因为我也遇到了完全相同的问题,并且刚刚发现这似乎是5.1模拟器的问题。我猜你的代码也是基于斯坦福2011年的课程('useDocument'方法提示了这一点)。 - brainray
是的,我的UIManagedDocument设置是从Paul的代码中复制和粘贴的。唯一的区别是添加了几行代码以支持轻量级迁移。 - Breno Gazzola
我遇到了同样的问题。你找到解决这个问题的方法了吗?谢谢! - Yan
还没有,但是正如其他人所提到的,如果在设备上运行它,它会很好地工作。由于某种原因,如果我使用Xcode从设备上运行,仍然会遇到问题,所以我不得不安装该应用程序(使用TestFlight)。 - Breno Gazzola
你们安装了Xcode 4.5.1吗?在我看来这个错误仍然存在:模拟器5.0和6.0可以工作,但是在模拟器5.1上完成处理程序仍然没有被调用。 - brainray
3个回答

5

我在iPhone模拟器5.1下遇到了同样的问题。文件创建需要很长时间(30秒)。但是完成处理程序从未被调用过。你试过在设备上运行吗?

编辑:这似乎是iOS模拟器5.1中的bug。我在我的旧iPad上编译了iOS 5.1.1,没有出现错误!


我曾经测试过一次,但是没有成功。但是有很多人告诉我这只是模拟器,现在我在想当我测试时是否还有其他的错误。 - Breno Gazzola

5
无法确定你的项目,但在这里使用的是Xcode 4.5版本。我在虚拟机中安装了Xcode 4.3.1和模拟器5.1,想象一下:那个版本完美地运行。Xcode4.3.1/Simulator5.1可用,而Xcode4.5 /Simulator5.1和Xcode4.5.1/Simulator5.1存在缺陷。解决方法是在Xcode中下载版本5.0的模拟器 -> 首选项 -> 下载。那个版本可用。

XCode 4.5.2 iOS 5.1 模拟器无法工作,但 iOS 5.0 模拟器(以及 6.0 模拟器)可以。谢谢。 - Joe

-1

我不相信问题出在模拟器上。我遇到了完全相同的问题(应用程序在6.0上运行但在5.x上却不能),我也尝试在设备上运行它,结果也是一样的。(我在这里解释了我的问题)

我的问题在5.0和5.1中都存在。例如,在任何iOS 5.x模拟器中,我甚至无法正确运行“主从应用程序”模板,但在6.0中可以正常工作。即使我在设备上尝试此模板,它也无法正常工作。因此,我真的相信问题出在XCode 4.5上。


请重新阅读问题和答案:这里描述的问题是关于5.1模拟器的。而你的问题是关于iOS 5.x与iOS 6.0之间的区别。 - brainray
原问题陈述了一个类似于我的问题。用户可以在6.0模拟器中运行它,但在XCode 4.5更新后的5.1中无法运行,这与我的情况相同。 - fabioalmeida

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接