CKReference на CloudKit с использованием Swift

У меня есть RecordType Account и еще один Friends, За Account Я устанавливаю RecordID на создание каждой записи и у меня есть столбец Name,

Для друзей у меня есть две колонки, Me а также MyFriend, MyFriend Справочник, содержащий RecordID учетной записи.

Как я могу получить имена учетных записей, которые являются моими друзьями? Мне нужно запросить друзей, чтобы получить все записи, где Me мой RecordID и затем мне нужно использовать эти ссылки на записи, чтобы получить имена из таблицы Account.

Я пробовал следующее, но я не получил результатов:

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)`

1 ответ

Решение

Если MyFriend является CKReference, то вам следует привести его не к строке, а к CKReference, а затем получить его recordID.recordName. Так что код будет выглядеть так:

var myFriend = friend.objectForKey("MyFriend") as CKReference
var key = myFriend.recordID.recordName
Другие вопросы по тегам