【问题标题】:Stumped that [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil] keeps returning nil难倒 [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil] 不断返回 nil
【发布时间】:2012-08-09 21:56:26
【问题描述】:

我编写了一个简单的测试应用程序 (Mac/Cocoa) 来连接到 iCloud 中的键值存储。我似乎要跌倒在第一道篱笆上。

您可以在此处查看我的简单应用程序的代码,并且您会看到我没有从“URLForUbiquityContainerIdentifier”调用中获取 URL。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
    NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
    if (!ubiq)
        NSLog(@"No iCloud");
    else
        NSLog(@"Yes iCloud");
}

运行输出的应用的屏幕截图:

在尝试查看我是否已正确设置所有内容时,我查看了开发人员配置中心中我的 App Id 的设置(测试应用称为 Radio):

所以这似乎没问题。然后我重新创建了我的配置文件(称为 Radio Dev 2)并检查它是否使用了正确的 App Id:

好的,所以这似乎也没问题。然后我检查了权利是否已打开并且键值容器已激活:

所以它们被激活了。然后我看了一下文件本身,看看有没有什么东西跳出来:

所以我在权利文件中看不到任何突如其来的东西。最后,我确认我正在使用我期望的配置文件使用正确的证书对构建进行签名:

我对此很满意。

所以我被难住了。我已经重新生成了所有内容,等等,但无济于事。

如果有人有任何想法,我将不胜感激。我错过了什么吗?

【问题讨论】:

  • 我必须等待 2 天才能提供自己的答案,但似乎需要打开 iCloud 容器才能使此代码正常工作,即使它没有被使用。
  • 它正在被使用,这就是关键值存储所在的地方

标签: objective-c xcode macos cocoa icloud


【解决方案1】:

Damien 对这个问题的评论为我提供了解决方案。对于使用 Xcode 4.5 的任何人,您需要单击 Ubiquity Containers 框下方的 +。在我这样做之前,没有任何效果。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我注意到在我的设备设置中,我没有登录我的 icloud 帐户。一旦完成添加我的帐户 iCloud。问题已解决。

    【讨论】:

      【解决方案3】:

      就我而言,我实现了“为 iCloud 配置项目”部分的“添加文档类型”和“添加导出的 UTI”部分。而且,它不会再保持 return nil 了。

      http://www.raywenderlich.com/12816/icloud-and-uidocument-beyond-the-basics-part-3

      【讨论】:

        猜你喜欢
        • 2014-12-15
        • 2014-09-25
        • 2017-05-04
        • 2016-10-08
        • 2015-03-06
        • 2018-07-01
        • 1970-01-01
        • 2014-07-04
        • 1970-01-01
        相关资源
        最近更新 更多