【问题标题】:CKReference on CloudKit using SwiftCloudKit 上的 CKReference 使用 Swift
【发布时间】:2015-04-16 07:11:15
【问题描述】:

我有一个 RecordType Account 和另一个 Friends。 对于Account,我在创建每条记录时设置RecordID,并且我有一列Name

对于朋友,我有两列,MeMyFriendMyFriend 是包含帐户的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, error) -> Void in
                if error != nil {
                    println(error.description)
                } else {
                    self.friends.append(record.objectForKey("Name") as String)
                }
            })
        }
        dispatch_semaphore_signal(self.semaphore)
    }
 }
 dispatch_semaphore_wait(self.semaphore, DISPATCH_TIME_FOREVER)`

【问题讨论】:

  • 你试过了吗?
  • 我已经更新了我的问题。谢谢。
  • 您的“我”字段是 CKReference 类型的吗?那么您在谓词中使用的值应该是 CKReference 类型。您现在正在使用 recordID。我怀疑该字段的类型为 recordID 是吗?然后你应该首先创建一个 CKReference 。
  • "Me" 只是一个字符串,我传递给我的 recordID 是记录 ID -> recordName(它是一个字符串)。 “MyFriend”是一个 CKReference,我想为其检索相应的帐户名称。
  • 如果 MyFriend 是 CKReference,那么您不应该将其转换为字符串,而是转换为 CKReference,然后获取它的 recordID.recordName

标签: ios swift cloudkit ckrecord ckreference


【解决方案1】:

如果 MyFriend 是 CKReference,则不应将其转换为字符串,而是转换为 CKReference,然后获取它的 recordID.recordName。所以该代码将如下所示:

var myFriend = friend.objectForKey("MyFriend") as CKReference
var key = myFriend.recordID.recordName

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多