2015-02-10 51 views
0

我正在嘗試製作一個應用程序,其中每個用戶都有一個個人頭像,一個暱稱等等。cloudkit:如何訪問主用戶的屬性?

我不知道如何訪問cloudkit上的用戶帳戶。

我的解決方案是檢索用戶的AppleID,查詢Cloudkit並修改用戶的屬性......但我想應該有更好的方法來做到這一點。是不是他們的東西像NSUserDefault,但對於雲計算?

回答

0

您首先必須瞭解userId中當前所處的內容。你可以通過在容器上執行fetchUserRecordIDWithCompletionHandler方法來實現。然後,通過在該容器上執行discoverUserInfoWithUserRecordID,您可以獲得更多(當前只有姓氏和名字)信息。

你可以用額外的自定義字段擴展用戶表,但我不會建議這樣做。 Users表是一個特殊的系統表,但有一些限制。用用戶設置創建一個單獨的recordType會更好。只需將CKReference添加到用戶表中便於訪問。

您還必須注意,用戶可以在應用程序運行期間註銷並使用其他iCloud帳戶登錄。您可以通過在應用程序啓動後執行下面的代碼來捕獲此信息。當然你必須在你看到NSLog的地方實現你自己的邏輯

var ubiquityIdentityDidChangeNotificationToken = NSNotificationCenter.defaultCenter().addObserverForName(NSUbiquityIdentityDidChangeNotification, object: nil, queue: nil) { _ in 
     NSLog("The user’s iCloud login changed: should refresh all user data.") 
    } 
+0

非常感謝。我開始爲昨天晚上的其他屬性編寫一個新的參考(每個用戶一個)。我還發現了fetchUserRecordIDWithCompletionHandler方法。我仍在努力將CKRecordID轉換爲CKRecordValue,換句話說,就是在代碼中創建引用。但我希望能找到一種方法。感謝您的回答,因爲我沒有考慮用戶更改iCloud帳戶的可能性。真的有幫助 – 2015-02-11 17:19:33

+0

如果你想要示例代碼,那麼你可以看看Apple CloudKit Atlas演示https://developer.apple.com/wwdc/resources/sample-code/,或者你可以看看這個CloudKit代碼:https://github.com/evermeer/EVCloudKitDao – 2015-02-12 06:54:49