iOs5:从URI表示创建NSManagedObject时出现NSInvalidArgumentException异常



我刚刚安装了iOs5,几乎所有的操作都非常流畅——但是现在我有一个奇怪的问题:

My App将NSManagedObjects的对象id写入一个文本文件,然后再次读取它们,并从持久存储中重新实例化相应的对象。它在更新之前工作得很好,现在当我调用

[persistentStoreCoordinator managedObjectIdForURIRepresentation:[NSURL URLWithString:objectIdString]]

我得到一个NSInvalidArgumentException -指定的URI不是在正确的方案

搜索无效参数异常的具体原因,根本得不到任何结果,对象id正是对

的调用。

[[objectId URIRepresentation]absoluteString]

的回报。根据apple文档,调用 managedobjecdforurirepresentation 甚至不应该引发NSInvalidArgumentException,而只是返回nil以防出现错误…

好的,我自己找到的

对于任何有类似问题的人:主要问题不是managedobjecdforurirepresentation调用,而是进来的objectIdString -尽管InvalidArgumentException不应该由函数调用抛出,因为它没有在文档中说明。

实际的问题甚至更奇怪: objecdstring 来自一个URL,我使用一个URL方案,调用我的应用程序的

(BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url

函数。被单击的URL方案条目具有正确的格式,如

appname://x-coredata://objectid

BUT:我在handleOpenURL函数中真正得到的是:

appname://x-coredata//objectid

显然是遗漏了一个重要的细节:x-coredata后面的冒号!!这就是导致崩溃的原因…对我来说似乎是handleOpenURL中的一个bug…

无论如何,现在的解决方法是看看这个冒号是否缺失,然后添加它-然后一切都很好。要向苹果公司提交bug报告

相关内容

  • 没有找到相关文章

最新更新