2015-04-16 2 views
3

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

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

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

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

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

Вы что-то пробовали? – Phate01

+0

Я обновил свой вопрос. Благодарю. –

+0

Является ли поле 'Me' типа CKReference? Тогда значение, которое вы используете в предикате, должно иметь тип CKReference. Теперь вы используете recordID. Я подозреваю, что это поле типа recordID? Затем вы должны сначала создать CKReference. –

ответ

2

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

var myFriend = friend.objectForKey("MyFriend") as CKReference 
var key = myFriend.recordID.recordName 
Смежные вопросы