问题标签 [ckrecord]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3972 浏览

ios - 我可以在 CKQuery 中使用 recordID.recordName 吗?

0 投票
1 回答
167 浏览

ios - 我可以将 CKRecords 从一个 CKContainer 移动到另一个 CKContainer 吗?

我不得不更改我的 Apple ID,但我在旧 Apple ID 的容器中拥有大量生产环境中的重要记录。

我可以在维护依赖项和记录作者的同时导出它们吗?

0 投票
3 回答
935 浏览

swift - 在 Swift 中在 CKRecord 上定义下标时堆栈溢出

这个问题CKRecord询问是否可以在 Swift中使用下标。虽然我已经知道如何做提问者想要的,但它的每一个排列都会给我一个堆栈溢出:

堆栈溢出发生在 getter 中。(我从未尝试过 setter,所以它也可能在那里发生。)我尝试使用objectForKey:objectForKeyedSubscript:valueForKey:. 都产生相同的结果:堆栈溢出。

这很奇怪,因为CKRecord肯定是用 Objective-C 编写的。为什么会递归调用 Swift 的subscript方法?这没有道理。Nate Cook 在回答提问者时想知道为什么 Swift 不会objectForKeyedSubscript:自动桥接。好吧,也许执行此操作的代码没有完全烘焙,但导致了这个问题。我将不得不与另一个具有objectForKeyedSubscript:.

更新

看起来objectForKeyedSubscript:通常是桥接的。我使用适当的方法在 Objective-C 中创建了一个类,将其添加到桥接头中,索引器就在那里并且没有问题地编译。更好的是,它在没有堆栈溢出的情况下工作。

这意味着正在发生一些非常不寻常的事情CKRecord

理论

如果您在 Swift 中创建一个类,该类从a 作为键继承NSObject并在其上实现该subscript方法,则它String变为objectForKeyedSubscript:. (对于“纯 Swift”类,我怀疑情况并非如此。)您可以通过将 Swift 类导入到 Objective-C 并验证它objectForKeyedSubscript:是否存在来验证这一点。

由于CKRecord继承自NSObject,因此实现subscript会覆盖默认实现。objectForKey:此外,似乎valueForKey:所有最终都调用objectForKeyedSubscript:了 ,这导致(阅读:“与”相同)调用subscript,从而导致堆栈溢出。

这可以解释为什么会发生堆栈溢出。它仍然没有解释为什么objectForKeyedSubscript:没有自动桥接,但也许是因为 的定义setObject:forKeyedSubscript:与规范的类型签名略有不同:- (void)setObject:(id <CKRecordValue>)object forKeyedSubscript:(NSString *)key;. 这对 Objective-C 没有影响,但可能会导致“桥接代码”出错。毕竟,Swift 是相当新的。

0 投票
1 回答
759 浏览

ios - Cloud Kit 订阅 CKRecord Created

我有一个正在使用 Cloud Kit 开发的 iOS 应用程序。基本上发生的情况是,当 CKRecord 被删除时,首先创建 CKRecord 的人应该会收到通知。为此,我正在创建订阅。

一切似乎都按应有的方式工作,除了似乎每当您创建记录时,您实际上是在订阅所有记录。那么谁创建了记录并不重要,因为您会收到通知。我想我弄错了 NSPredicate,也许有人可以帮忙?这是我拥有的相关代码:

现在我知道recordId 的attributeName 实际上应该是recordID.recordName 之类的东西,但我也试过了,但没有用。我仍然得到相同的结果。我不知道执行此操作的最佳方法,但基本上我想要的是在删除该记录时仅向 CKRecord 的创建者订阅。

请注意,首先我创建了CKRecord,然后将其上传到 CloudKit。然后在回调方法中,我订阅并执行上面的代码。

0 投票
1 回答
3899 浏览

ios - CKRecord 获取键的值

我正在尝试根据用户名获取用户的值。我能够使用以下方法获得正确的用户:

然后我可以通过调用获得正确的记录:

我也可以通过使用获得正确的 ID

所以我知道我正在获取正确的记录,但是,当我尝试从记录中获取值(例如用户的电子邮件)时,nil会返回:

我也试过:

当我打印时record.allKeys(),我得到一个空数组,[]当我打印时record.allTokens(),我得到一个返回nil

我是否没有正确地从记录中获取值,或者我是否必须使用记录 ID 查询数据库以获取我想获得的每个值?根据文档所说的:

A CKRecord object is a dictionary of key-value pairs that you use to fetch and save the data of your app.

I would assume that I do not have to query the database for every value that I would like to get, and that the values are automatically inserted into the CKRecord upon getting it from iCloud

0 投票
1 回答
1104 浏览

ios - 使用 CloudKit 修改数据

我有想在 CloudKit 中修改的数据。我发现了这个问题(在 CloudKit 中保存修改的数据),它指向 CKModifyRecordsOperation,但是对此我很陌生,我正在寻找更多指导。我正在像这样设置我的对象:

如果我只修改一条记录而不是全部,我还调用 CKModifyRecordsOperation 吗?关于如何完成的任何线索?我一直在使用[self.cloudManager saveRecord:object];,但修改记录这不起作用。

0 投票
1 回答
1186 浏览

ios - 如何定义 CKRecord 类

我认为将包含信息的基本数据对象定义为 CKRecord 可能是个好主意,因为我显然将使用 CloudKit。但是,我不知道如何制作一个 CKRecord 类。特别是,我不知道如何定义它的“recordType”。

我的具体问题:为什么行“self.recordType =”myRecordType”会产生错误“无法在self中分配给recordType”?这个CKRecord类中的每一个都是相同的类型,那么我该如何为其分配一个recordType ?

如果您有观察,我的第二个问题是:您是否看到在查询等中直接在 CloudKit 中使用此类的对象(读取和写入)有任何其他问题?如果您在某处看到过类似的示例代码,请告诉我。谢谢

0 投票
1 回答
127 浏览

ios8 - 如何在私有数据库 CloudKit 中获取 RecordType 的所有名称

我想知道如何在 Cloud Kit 的私有数据库中获取一个包含所有记录类型名称的数组,以读取我的所有数据?

我保存我的数据:

我读了我的数据:

我想用其他属性保存另一条记录,例如:

保存后如何使用 Favoris1 和 Favoris2 读取我的所有记录?

0 投票
6 回答
10786 浏览

ios - CloudKit:获取具有某种记录类型的所有记录?

我目前在我的应用程序中设置了CloudKit,以便我使用以下代码的帮助添加新记录,

但是,现在我希望能够获取具有相同记录类型“字符串”的所有记录,并将那些编译成 NSArray 的记录返回。我该怎么做呢?目前,我所想的只是如何使用recordID单独获取每条记录,这很麻烦,必须有一种更简单的方法。

0 投票
1 回答
1150 浏览

ios - 使用 CloudKit 从 Swift 中的 CKRecord 中提取 NSArray

如何”从 CKRecord 中填充 NSArray(字符串数组)?

我成功创建了记录:myPrivateDatabase.saveRecord

我可以通过以下方式成功获取记录:myPrivateDatabase.fetchRecordWithID

我可以看到数据在记录中: println(returnRecord.objectForKey("key1")) 以逗号分隔,带引号的字符串的形式

但我不知道如何把它放回 NSArray

帮助!

谢谢 :-)