上下文
Apple 在 iOS8 和扩展中引入了应用程序组容器 ( more info here )。
问题
我们通过 NSFileManager
的 containerURLForSecurityApplicationGroupIdentifier:
方法使用它。它在 AppStore 的生产中运行良好(iOS8 和 iOS7)。问题是因为我们的团队更新到 Xcode 6.1 (6A1052d)
,该方法在模拟器上返回 nil
。
我们搜索了很多,但没有找到任何线索。甚至这个question或 this one不适用于此处。
TLDR:问题
NSFileManager
的containerURLForSecurityApplicationGroupIdentifier:
方法是否适用于您的模拟器?有什么办法可以解决这个问题吗?
最佳答案
containerURLForSecurityApplicationGroupIdentifier:
方法在设备和模拟器中均有效。
如果您设置了要共享数据以支持组的两个目标(例如 Target 和 WatchKit Extension),并且它一直返回 nil,您可能需要检查您的目标设置。
Target Settings > General > Team > yourCompany signing team 应在此处选择。如果有警告和修复此问题按钮,请做好准备 并通过点击它来解决问题:)
Target Settings > Capabilities > App Groups > Is On + 显示您的 group.com.yourcompany.yourapp.sharedContainter 组名称(“sharedContainer”是我选择的名称)已被选中并为黑色 (不是红色)。如果它是红色的或有警告并修复此问题 按钮,更新组或创建一个不同的组。
目标设置 > build设置 > 代码签名 > 代码签名 权利:指向您的权利文件,用于调试和 发布(类似于 yourApp/yourApp.entitlements)
目标设置 > build设置 > 代码签名 > 代码签名 身份:确保身份是上面选择的团队的一部分。 我使用 iOS Developer。
目标设置 > build设置 > 代码签名 > 供应 简介:同上,确保你用的PP是Team的 必需的。我将其设置为自动。
检查那些两个目标共享数据。
希望对你有帮助
关于objective-c - containerURLForSecurityApplicationGroupIdentifier 在 iOS 模拟器上返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26740404/