CoreData: Ubiquity:无效选项: NSPersistentStoreUbiquitousContentNameKey的值不应该包含句点: com.YashwantChauhan.Outis mobile~20BF44C9-C39F-48DC-A8A1-B45FC82C7E20:com.YashwantChauhan.Outis:-PFUbiquitySwitchboardEntryMetadata setUseLocalStorage::CoreData: Ubiquity
我对与iCloud同步有问题。上面这两个错误是对我造成的。我不知道问题出在哪里,我设置了权利文件,并将Ubiquity设置为com.YashwantChauhan.Outis。
我使用MagicalRecord的方法启动CoreData堆栈:
[MagicalRecord setupCoreDataStackWithiCloudContainer:@"N6TU2CB323.com.YashwantChauhan.Outis" localStoreNamed:@"Model.sqlite"];但这一点都不重要,因为MagicalRecord只是简化了CoreData方法。
非常感激的帮助。
Ok更新:
在获得无处不在的容器URL:-NSFileManager Domain=LibrarianErrorDomain Code=11时发生了错误。“操作无法完成。(LibrarianErrorDomain错误11 --客户端的权限不允许请求的容器标识符)。”客户端的com.apple.developer.ubiquity-container-identifiers权限不允许UserInfo=0x15e0d8a0 {请求的容器标识符。}
这是我最近收到的错误信息,我意识到这与问题的初始错误不同,但原来的错误是某种奇怪的错误。我尝试了@Rauru的解决方案,方法是从泛容器标识符中删除句点。我知道这是行不通的,因为标识符的要求是包含句点,但是当我把句点放回去时,它会发出上面的错误消息。这比不使用句号更有意义。我们都知道我们做。
我还找到了这个方便的代码片段,它可以通过获取来检查我的Ubiquity容器标识符。有用的片段,以快速检查您是否有任何问题。
NSString *containerId = @"com.YashwantChauhan.Outis";
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *iCloudURL = [fileManager URLForUbiquityContainerIdentifier:containerId];
NSLog(@"%@", [iCloudURL absoluteString]);另一个更新:,从外观上看,这个愚蠢的NSPersistentStoreUbiquitousContentNameKey should not contain periods是一团糟。如果NSPersistentStoreUbiquitousContentNameKey是像某种文件夹(教程)一样创建的,那么需要的是没有名称的.,比如.com.YashwantChauhan.Outis,但事实并非如此。我开始发疯了!权利文件没有问题,在MagicalRecord中获取MagicalRecord容器ID也没有问题。我开始认为这是在Xcode 5中设置iCloud的内部问题,但我当然不知道。说到这里,我可能会忘记一些琐碎的事情,或者会给其他人带来头痛的事情。
任何人都可以张贴他们的权利文件,以便我可以核实一个实际的工作版本是什么样的。当然是编辑了。谢谢!
发布于 2014-02-03 10:01:59
参考https://forums.pragprog.com/forums/252/topics/12315
引述答复:
这是最近改变的(小牛队)。幸运的是,由于您刚刚添加了iCloud,所以影响很小。
您需要更改以下代码行:
[options setValue:[NSBundle mainBundle bundleIdentifier] [NSBundle mainBundle bundleIdentifier])那是什么别的东西?我会向您的应用程序推荐一些描述性的内容。最近我一直在使用类名,比如结构。所以我会把它改成你的应用程序的名字,或者简单地说是“DataStorage”。
名称对于您的应用程序是唯一的,所以只要您理解它,实际值就不重要。
所以我修改了下面的代码..。
options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, // Key to automatically attempt to migrate versioned stores
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, // Key to attempt to create the mapping model automatically
@"TrafficCamNZ_DataStore", NSPersistentStoreUbiquitousContentNameKey, // Option to specify that a persistent store has a given name in ubiquity.
cloudURL, NSPersistentStoreUbiquitousContentURLKey, // Option to specify the log path to use for ubiquitous content logs.
nil];请参阅TrafficCamNZ_DataStore之前有TrafficCamNZ.DataStore的一行
发布于 2015-06-19 15:00:39
我使用的是一个共享容器,只是弹出了同样的错误警告。我可以通过替换所有变化的云标识符字符串来修复它,如:
"$(TeamIdentifierPrefix)com.mydomain.myapp"和"com.mydomain.myapp"和"ABCDEF0123.com.mydomain.myapp"仅使用这个显式云容器字符串:
"ABCDEF0123.com.mydomain.myapp"我猜想,在某个时候,Xcode必须更新了权限并重新插入了"$(TeamIdentifierPrefix)",这是由于共享容器导致的错误。而且,我已经忘记了代码中的标识符,就像您似乎有的那样:
NSString *containerId = @"com.YashwantChauhan.Outis";应该是这样的:
NSString *containerId = @"ABCDEF01234.com.YashwantChauhan.Outis";发布于 2013-10-23 14:06:14
我也有同样的问题,我不知道问题是什么,也不知道为什么会有这个问题。根据我所读到的,我们应该能够使用containerId中的点。
然而,对我来说,它开始工作的方法是用tildes替换containerId中的点:
即:
NSString *containerId = @"N6TU2CB323~com~YashwantChauhan~Outis";而不是:
NSString *containerId = @"N6TU2CB323.com.YashwantChauhan.Outis";https://stackoverflow.com/questions/19209504
复制相似问题