我刚刚安装了iOs5,几乎所有人都出人意料地流利 - 但现在我有一个奇怪的问题:
我的应用程序将 NSManagedObjects 的对象ID写入文本文件,然后再次读取它们并从持久性存储中重新实例化相应的对象。它在更新之前工作正常,现在我打电话
[persistentStoreCoordinator managedObjectIdForURIRepresentation:[NSURL URLWithString:objectIdString]]
我得到 NSInvalidArgumentException - 指定的URI不在正确的方案中
Google搜索无效参数异常的具体原因完全没有提供任何内容,而对象ID正是对
的调用 [[objectId URIRepresentation]absoluteString]
回报。根据Apple文档,对 managedObjectIdForURIRepresentation 的调用甚至不应该引发 NSInvalidArgumentException ,而只是在出现错误时返回 nil ...
答案 0 :(得分:1)
好的,我自己找到了。
对于有类似问题的任何人:主要问题不是managedObjectIdForURIRepresentation调用,而是来自objectIdString - 尽管函数调用IMHO不应该抛出InvalidArgumentException,因为它没有在文档中声明。
实际问题更奇怪: objectIdString 来自我通过使用调用我的应用程序的URL方案获得的URL
(BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url
功能。单击的URL方案条目具有正确的格式,如
appname://x-coredata://objectid
但是:我在 handleOpenURL 功能中真正做到的是:
appname://x-coredata//objectid
显然错过了一个重要的细节:x-coredata之后的冒号!!! 这导致了崩溃......看起来像handleOpenURL中的一个bug给了我......
无论如何,现在的解决方法是查看是否缺少此冒号,然后添加它 - 一切正常。要向Apple提交错误报告。