问题标签 [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.
ios - 我可以将 CKRecords 从一个 CKContainer 移动到另一个 CKContainer 吗?
我不得不更改我的 Apple ID,但我在旧 Apple ID 的容器中拥有大量生产环境中的重要记录。
我可以在维护依赖项和记录作者的同时导出它们吗?
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 是相当新的。
ios - Cloud Kit 订阅 CKRecord Created
我有一个正在使用 Cloud Kit 开发的 iOS 应用程序。基本上发生的情况是,当 CKRecord 被删除时,首先创建 CKRecord 的人应该会收到通知。为此,我正在创建订阅。
一切似乎都按应有的方式工作,除了似乎每当您创建记录时,您实际上是在订阅所有记录。那么谁创建了记录并不重要,因为您会收到通知。我想我弄错了 NSPredicate,也许有人可以帮忙?这是我拥有的相关代码:
现在我知道recordId 的attributeName 实际上应该是recordID.recordName 之类的东西,但我也试过了,但没有用。我仍然得到相同的结果。我不知道执行此操作的最佳方法,但基本上我想要的是在删除该记录时仅向 CKRecord 的创建者订阅。
请注意,首先我创建了
CKRecord
,然后将其上传到 CloudKit。然后在回调方法中,我订阅并执行上面的代码。
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
ios - 使用 CloudKit 修改数据
我有想在 CloudKit 中修改的数据。我发现了这个问题(在 CloudKit 中保存修改的数据),它指向 CKModifyRecordsOperation,但是对此我很陌生,我正在寻找更多指导。我正在像这样设置我的对象:
如果我只修改一条记录而不是全部,我还调用 CKModifyRecordsOperation 吗?关于如何完成的任何线索?我一直在使用[self.cloudManager saveRecord:object];
,但修改记录这不起作用。
ios - 如何定义 CKRecord 类
我认为将包含信息的基本数据对象定义为 CKRecord 可能是个好主意,因为我显然将使用 CloudKit。但是,我不知道如何制作一个 CKRecord 类。特别是,我不知道如何定义它的“recordType”。
我的具体问题:为什么行“self.recordType =”myRecordType”会产生错误“无法在self中分配给recordType”?这个CKRecord类中的每一个都是相同的类型,那么我该如何为其分配一个recordType ?
如果您有观察,我的第二个问题是:您是否看到在查询等中直接在 CloudKit 中使用此类的对象(读取和写入)有任何其他问题?如果您在某处看到过类似的示例代码,请告诉我。谢谢
ios8 - 如何在私有数据库 CloudKit 中获取 RecordType 的所有名称
我想知道如何在 Cloud Kit 的私有数据库中获取一个包含所有记录类型名称的数组,以读取我的所有数据?
我保存我的数据:
我读了我的数据:
我想用其他属性保存另一条记录,例如:
保存后如何使用 Favoris1 和 Favoris2 读取我的所有记录?
ios - CloudKit:获取具有某种记录类型的所有记录?
我目前在我的应用程序中设置了CloudKit,以便我使用以下代码的帮助添加新记录,
但是,现在我希望能够获取具有相同记录类型“字符串”的所有记录,并将那些编译成 NSArray 的记录返回。我该怎么做呢?目前,我所想的只是如何使用recordID单独获取每条记录,这很麻烦,必须有一种更简单的方法。
ios - 使用 CloudKit 从 Swift 中的 CKRecord 中提取 NSArray
如何”从 CKRecord 中填充 NSArray(字符串数组)?
我成功创建了记录:myPrivateDatabase.saveRecord
我可以通过以下方式成功获取记录:myPrivateDatabase.fetchRecordWithID
我可以看到数据在记录中: println(returnRecord.objectForKey("key1")) 以逗号分隔,带引号的字符串的形式
但我不知道如何把它放回 NSArray
帮助!
谢谢 :-)