我正在尝试为苹果手表制作我的应用程序,但我遇到了云容器的问题。当我为手表扩展创建云套件时,它创建了自己的容器/数据库,所以现在我试图让它们共享同一个。我尝试指定我想要的自定义容器,但它不起作用。请帮忙!

我正在 CloudKit 上工作,但不断收到字符不允许错误。允许使用哪些字符?
我正在创建一个高度面向图片的应用程序,最终可能会使用很多 ckassets。但我读到每个用户的每日数据传输有 25mb 的限制。我的问题是这些数据可以转移吗?如果一个用户使用 0,那么其他人可以使用 50?我觉得 25mb 的数据传输限制似乎很小,因为一张图片是 100k,所以每天最多只能播放 250 张图片。这似乎是一个如此严重的限制。谢谢你。
我需要从与字符串匹配的 cloudkit 中提取记录。
我有一个用户记录类型,带有一个电子邮件字段。我在同一封电子邮件中有多个记录,但我无法通过谓词来获取这些记录。
我已经尝试了所有这些:
let predicate = NSPredicate(format: "email = 'julio_ukohgsp_chevez@tfbnw.net'")
NSPredicate(format: "email == %@", argumentArray: [email])
NSPredicate(format: "email IN %@", [email])
NSPredicate(format: "email contains %@", email)
NSPredicate(format: "email = %@", email)
NSPredicate(format: "email == %@", email)
Run Code Online (Sandbox Code Playgroud)
我的查询指定了记录类型:
let query = CKQuery(recordType: "User", predicate: NSPredicate(format: "email == %@", email))
Run Code Online (Sandbox Code Playgroud)
当我使用 value: true 执行谓词时,我会得到所有记录,包括我想要的记录。
我错过了什么?
编辑 ..
let query = CKQuery(recordType: "User", predicate: NSPredicate(format: "email BEGINSWITH %@", email))
Run Code Online (Sandbox Code Playgroud)
确实有效并带回记录,但我想要精确匹配!
因此,我正在开发两个要使用同一个 iCloud 容器的应用程序。
我已经按照 Xcode 和苹果的在线文档中所示的所有步骤进行操作。我在我的应用程序中添加了激活的 iCloud 功能,选中了 CloudKit 复选框,选择了一个我想要使用的自定义容器(这两个应用程序显然相同)。
该应用程序已更改权利文件中的 iCloud 容器标识符,这应该表明一切正常。但是,每当我使用该应用程序并打印我的容器名称时,它都会显示每个应用程序的默认容器名称。
我创建了一个对象,CloudKitController用于管理所有云流量。我将它初始化为应用程序启动的超时时间,并设置如下变量:
var container: CKContainer
var publicDB: CKDatabase
let privateDB: CKDatabase
var delegate: CloudKitControllerDelegate?
override init() {
container = CKContainer.default()
print(container.containerIdentifier)
//this prints the name of the default container for the project
publicDB = container.publicCloudDatabase
privateDB = container.privateCloudDatabase
}
Run Code Online (Sandbox Code Playgroud)
我什至访问了开发人员门户并确保我要使用的容器是两个应用程序都关联的唯一容器。也没有用。
我的问题是:我怎样才能让两个应用程序(显然来自同一个开发人员帐户和配置文件)在一个 iCloud 容器上运行?
斯威夫特 3.1,Xcode 8.3.3
我在 CloudKit 中有一个记录类型,Aircraft它有一个名为 的字段fieldValues,类型为Reference List。
在我的代码中,我有一个aircraftCKRecord 和几个fieldValue作为飞机子代的 CKRecord。
我如何将所有这些fieldValue记录放入aircraft的参考列表中?
创建 aCKReference似乎只允许其中有一条记录:
let reference = CKReference(record: fieldValueRecord, action: .deleteSelf)
Run Code Online (Sandbox Code Playgroud)
但我试图将许多fieldValues连接到单个aircraft. 有任何想法吗?
我需要了解:
readwrite仅更改为read有可能吗?
我想为我的应用程序使用 cloudkit 的私有数据库,所以为了设计,我正在寻找可以轻松将我的模型类映射到 cloudkit 的东西,而无需任何额外的努力。
所以我在苹果文档中发现了一些有趣的东西,
在开发过程中,使用 CloudKit API 创建架构很容易。将记录对象保存到数据库时,会自动为您创建关联的记录类型及其字段。此功能称为即时模式,仅当您使用商店中出售的应用程序无法访问的开发环境时才可用。例如,在开发过程中,您可以使用存储在属性列表中的测试记录填充 CloudKit 数据库。
但是我无法完全理解相同的概念,或者无法找到任何可靠的教程来实现这一点。
我试图在过去的 2 个小时里用谷歌搜索这个,但发现几乎没有任何用处。假设我想在 CloudKit 平台上创建一个带有联系人的消息传递应用程序。
您为用户使用公共数据库。假设您可以通过电子邮件地址在平台上搜索人员。所以电子邮件是一种存储在用户记录类型中的公共信息。然而,这个用户也有只有被接受的联系人才能看到的秘密信息。您邀请他成为您的联系人,该联系人将保存到公共数据库中并发送某种通知。
现在怎么办?您如何共享有关用户的秘密信息,例如电话号码,或者比方说他的所有联系人。CKShare似乎不能解决此类问题。另外,如果我私下给对方发消息,这条记录会保存在哪里?进入公共数据库?诶。
当然,我可以将其全部保存在公共数据库中,但这如何安全?如果应用程序可以,那么有人不能获取数据吗?我读过有关加密数据的文章,但这对我来说听起来像是很多工作和混乱,甚至不知道如何按需共享密钥。
在以下链接中,提供了一个项目的源代码,该项目允许您在相同的用户设备之间同步核心数据。数据存储在用户私有数据库中......有没有办法从公共 CloudKit 数据库中的 CoreData 同步数据,以便所有应用程序用户之间的应用程序都相同?为什么 NSPersistentCloudKitContainer 不允许你设置这个?
https://developer.apple.com/documentation/coredata/synchronizing_a_local_store_to_the_cloud