标签: ckreference

CloudKit中CKReferenced记录的数量是否有限制?

我试图在CloudKit中存储联系人组,如果我尝试创建一大组记录,CKReferenced到单个组记录,我会收到错误.

该限制似乎约为700左右的记录.

有没有其他人看到类似的结果,或者可以确认限制的存在(或不存在)?我无法在文档中找到任何内容,也无法通过Google找到任何内容.

注意:我已经将我提交的记录拆分为400或更少的批次,因为这似乎是一个硬限制.

ios icloud cloudkit ckreference

10
推荐指数
1
解决办法
664
查看次数

在CloudKit中保存对象数组

我对如何最好地保存包含CloudKit中其他对象数组的对象感到困惑.

假设我有一个待办事项列表应用程序,它有不同的项目集合.我如何保存/获取整个项目集合?

我是否有一个Record类型的Collection,它有一个名为"Name"的String属性,然后是一个名为"Items"的引用列表属性?

我知道Record类型的Item需要有一个名为"Collection"的引用属性,因为CloudKit如何从子对象引用它的父对象.

我已设法使用以下代码保存没有任何Item实例的集合

func addCollection(collection: Collection!, completion: (error: NSError!) -> ()) {
    if collection == nil
        return
    }
    let collectionRecord = CKRecord(recordType: "Collection")
    CollectionRecord.setObject(collection.name, forKey: "Name")
    privateDB.saveRecord(collectionRecord) {
        record, error in
        dispatch_async(dispatch_get_main_queue()) {
           completion(error: error)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

另一个选项是在保存Collection时,循环遍历Item的所有实例并单独保存它们,它们的Reference Attribute to Collection在CloudKit端进行连接,但这似乎是太多的网络调用.

swift ios8 cloudkit ckreference

9
推荐指数
1
解决办法
2584
查看次数

在CloudKit中获取CKReferences的最佳实践方法是什么?

在我的CloudKit设置中,我有一个Person记录类型,每个人都有一个Friend属于CKReference另一个Person对象的属性.

我拿了所有Person CKRecord的.我在桌子上列出这些人并将他们的朋友列在他们身上.目前我只是使用CKReference和单独获取每个朋友recordID.

这是我能看到的唯一方法,但最佳做法是什么?特别是因为我可能吸引了大量的朋友.单独获取所有这些对象似乎违反直觉.

我想知道是否有一个类似CoreData的方法,你可以选择在主要提取中获取相关对象?因此,例如,当我获取Person它时,它也会自动获取朋友.

objective-c ios cloudkit ckreference

8
推荐指数
1
解决办法
1130
查看次数

用于CKReference的CloudKit Delete Self选项不起作用

是否有人有使用经验的CloudKit选项DeleteSelfCKReference?这是我从文档中得到的:

DeleteSelf

引用记录的删除操作.删除记录还会删除包含指向该记录的CKReference对象的所有记录.删除附加记录可能会触发更多记录的级联删除.删除在默认区域中是异步的,在自定义区域中是立即的.

所以我一直在测试这个,我创建了多个CKReference对象,使用CloudKit Dashboard和使用我的应用程序.每当我使用我的应用程序执行此操作时,我都会像这样创建引用:

let reference:CKReference = CKReference(recordID: savedFriend.friendID, action: CKReferenceAction.DeleteSelf)
Run Code Online (Sandbox Code Playgroud)

我知道它被分配为删除自己,因为在仪表板中它显示选中的选项: 删除自我检查

我必须做错事,因为无论何时我去手动删除使用仪表板引用的记录,或者设置我的应用程序以编程方式删除它,记录都会消失,但引用永远不会被删除.我想也许我应该等待,它最终会发生,但几小时后它仍然在那里检查,就像它本应该删除自己.这有点令人沮丧,因为我设计了一些我的代码,假设这可以工作,现在我可以有一个浪费资源的应用程序试图找到一个CKRecord不再存在的.我应该不依靠这个来工作吗?我感谢任何帮助或建议.

更新〜04/07/2016

我跳了回来,并发布了一个更新,问题已经解决了.我并不完全相信这个问题不会重新出现,所以我昨晚寻求一些保证.我创建了5个不同的,CKRecords并创建了各种不同的CKReference对象,以便在我的数 然后我继续为CKReferenceAction.DeleteSelf每个引用设置选项(我通过仪表板手动尝试了两个,其他三个以编程方式完成).无论如何,我等了几分钟然后删除了引用的记录......十分钟后,引用仍然存在.我又等了5-10分钟,他们还在那里,所以我上床睡觉,假设早上他们肯定要走了,对吧?错误!12个小时后,CKReference条目仍在那里,引用的记录仍然没有.我肯定是在挠头,似乎这是一个错误CloudKit.我应该提一下,我也注意到我的仪表板中有一些奇怪的行为.在过去的四天左右,在左下角,它一直表示它是"重新索引开发数据",这里是一张图片,例如: 重新索引通知

这会导致这个问题吗?有人熟悉这个问题并知道解决这个问题的方法吗?任何建议,将不胜感激.我已经向Apple提交了一份错误报告.

ios swift cloudkit ckreference

7
推荐指数
1
解决办法
784
查看次数

CKReference .DeleteSelf属性无效

.DeleteSelf如何真正起作用?文件说:

当引用对象的操作设置为CKReferenceActionDeleteSelf时,引用的目标(即存储在引用的recordID属性中的记录)将成为源记录的所有者.删除目标(所有者)记录将删除其所有源记录.

但我的印象是删除目标并不总是删除源.它仍然在容器中,客户端下载它,并期望参考点到某处,但在客户端上构建服务器数据存储片时,目标不存在,这是非常烦人的?

你怎么对待这个案子?你忽略那种记录?或者您定期查找CloudKit存储,搜索损坏的记录以删除它们?

或者不是删除记录,最好设置一个属性,使其处于已删除状态,但将其保留在数据库中?

ios cloudkit ckreference

6
推荐指数
1
解决办法
340
查看次数

使用Swift对CloudKit进行CKReference

我有一个RecordType Account和另一个Friends.因为Account我正在设置RecordID每个记录的创建,我有一个列Name.

对于朋友,我有两列,MeMyFriend.MyFriend是包含RecordID帐户的参考.

如何检索作为我朋友的帐户名称?我需要查询Friends以获取Me我所在的所有记录,RecordID然后我需要使用这些记录的引用来从Account表中获取Names.

我尝试了以下但没有得到任何结果:

let predicate = NSPredicate(format: "Me = %@", recordID)
let query = CKQuery(recordType: "Friends", predicate: predicate)
publicDB.performQuery(query, inZoneWithID: nil) { (results, error) -> Void in
    if error != nil {
        println("Error fetching from Friends table: \(error.description)")
    } else {
        for friend in results {
            var key = friend.objectForKey("MyFriend") as String
            self.publicDB.fetchRecordWithID(CKRecordID(recordName: key), completionHandler: { (record, …
Run Code Online (Sandbox Code Playgroud)

ios swift cloudkit ckreference ckrecord

5
推荐指数
1
解决办法
1926
查看次数

CKReference 的 CloudKit 订阅通知未按预期工作

我正在尝试为包含用户的 CKReference 字段的记录设置 CKSubscription。但是无论何时创建记录,它都会忽略复合谓词的这一部分,并且通知永远不会出现。在 CKSubscription 的谓词中使用 CKReference 有什么不同吗?我进入仪表板以在我自己的用户记录 ID 下输入新记录(在模拟器中运行另一个用户时),因为我相信我读到如果记录来自设备,它将不会收到通知。非常感谢任何见解,因为我已经坚持了一个星期,并且无法在网上找到任何特定于此的内容。我能够获得真正的类型谓词通知,所以我认为我的基本设置没问题。

在仪表板中,我看到两个测试用户都有一个通用订阅,但没有看到任一用户的任何特定记录 ID(这有关系吗?):

Notifications.read (equals string)
Notifications.user (equals reference)
Run Code Online (Sandbox Code Playgroud)

当我执行 fetchAllSubscriptionsWithCompletionHandler 方法时,它会在调试器中将此设备的当前用户的特定记录 ID 显示为 CKReference。所以我不知道为什么它不起作用。

这是我首先创建 CKReference 然后将其用于谓词的代码:

var recordIDString = CKRecordID(recordName: "_a86dac8ee05f8c6ab35746bf9663d7b8")
// I normally store this string in the NSUserDefaults.

    let userRef = CKReference(recordID: recordIDString, action: .DeleteSelf)
     let predicate = NSPredicate(format: "user = %@", userRef)
   let predicateTwo = NSPredicate(format: "read = %@", "")
// I want the read field to be empty, which tells me user has not read …
Run Code Online (Sandbox Code Playgroud)

ios swift cloudkit cksubscription ckreference

3
推荐指数
1
解决办法
960
查看次数

在 CloudKit 中创建指向多个 CKRecord 的引用列表

斯威夫特 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. 有任何想法吗?

cloudkit ckreference

2
推荐指数
1
解决办法
677
查看次数

CloudKit CKReference列表

所以我hava记录包含一个CKReference List字段.

现在我想批量获取所有引用的(通过这个CKReferences列表)记录(来自另一种类型).

有任何想法吗?

ios cloudkit ckreference ckrecord

1
推荐指数
1
解决办法
2309
查看次数