2015-04-16 47 views
3

我有一個RecordType Account和另一個Friends。 對於Account我在創建每條記錄時設置了RecordID,並且我有一列Name使用Swift的CloudKit上的CKReference

對於朋友我有兩欄,MeMyFriendMyFriend是包含帳戶的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

CKReference是你的'我'字段嗎?然後,您在謂詞中使用的值應該是CKReference類型。您正在使用recordID。我懷疑這個字段的類型是recordID嗎?那麼你應該首先創建一個CKReference。 –

回答

2

如果MyFriend是CKReference,那麼你不應該將它轉換爲一個字符串,但到CKReference,然後得到它recordID.recordName。因此,代碼將如下所示:

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