即使configuration正确,URLForUbiquityContainerIdentifier也会返回nil

我有这个问题,URLForUbiquityContainerIdentifier在某些情况下返回零,即使用户已经设置正确的一切。 我的代码:

dispatch_async(someQueue, ^{ if (![[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]) { ErrLog(@"iCloud container not available."); return; } dispatch_async(dispatch_get_main_queue(), ^{ [...] }); }); 

有人遇到同样的问题吗? 我将这个容器标识设置为零,这个标识应该按照苹果的文档工作,但是我不再那么确信。 此外,这个代码适用于大多数用户,但不知何故不适合每个人。

检查您是否在您的授权中启用了iCloud容器。 启用授权时,默认情况下不会添加容器。 点击Target / Summary / Entitlements中的“+”号来添加你的appId。

带有iOS7的iPad mini。 我刚刚经历过那个URLForUbiquityContainerIdentifier突然开始返回nil。 我试过重新启动设备,但没有帮助。

在“设置”应用程序的“iCloud”菜单下。 我注意到“文档和数据”被设置为“关”。

解决scheme是将“文档和数据”更改为“开”。

如果任何人使用iOS8 Betas时遇到了同样的问题,那么在Xcode 6中生成权利的方式似乎就存在一个错误。在这个post中,我一直在讨论这个问题,直到在苹果开发者论坛上发布这个post: https ://devforums.apple.com/thread/229509?

从本质上讲,当Xcode应该是com.apple.developer.ubiquity-container-identifiersubiquity ,而不是icloud )时,Xcode会生成一个名为com.apple.developer.icloud-container-identifiers的密钥。 它也可以设置为iCloud.$(CFBundleIdentifier)当它应该是$(TeamIdentifierPrefix).$(CFBundleIdentifier)

当然,这可能会在下一个testing版中得到修复,但是对于像我这样困惑的人来说,我希望这会有所帮助。

我会看看你的entitlement.plist我需要更改$(TEAMID)在configuration文件中的dns之前的数字和字母id的configuration我需要一个应用程序 – 这里是一些代码,将与UIManagedDocument

 /// test iCloud Access - (void)initializeiCloudAccess { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ if ([[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil] != nil) NSLog(@"iCloud is available\n"); else NSLog(@"This Application requires iCloud, but it is not available.\n"); }); } - (NSURL *)iCloudURL { return [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]; } - (NSURL *)iCloudDocumentsURL { return [[self iCloudURL] URLByAppendingPathComponent:@"Documents"]; } - (NSURL *)iCloudCoreDataLogFilesURL { return [[self iCloudURL] URLByAppendingPathComponent:@"CoreDataLogs"]; } 

URLForUbiquityContainerIdentifier总是返回零

 NSURL *ubiquityURL = [fileManager URLForUbiquityContainerIdentifier:nil]; if (ubiquityURL == nil) 
  • 由xcode4.5构build的应用程序
  • 应用程序是启用icloud
  • iosloginicloud帐户

ubiquityURL在debugging中是正常的,但ubiquityURL在分发到appstore后总是为零。

今天我再次遇到这个问题。

这一次是因为我有一个无效的configuration文件。

无效的配置文件

在开发者网站上,我不得不生成一个新的configuration文件。 之后在Xcode5中重新加载configuration文件。 现在URLForUbiquityContainerIdentifier再次返回有效的url。

如果您仍然遇到问题,请确保您在模拟器上运行,不会总是返回有效的值。 我试过你在我的应用程序代码,我没有得到零

在iPhone的设置中启用“iCloud Drive”