2017-02-04 8 views
1

私はCloudKitが新しく、現在のユーザによってレコードが作成されたかどうかを調べようとしていました。私はこの話題を研究し、これを行うには2つの方法があります。私はどちらが正しいか良いかわからないし、私は2番目の方法がどのように機能するかをよく理解していません。CKRecordが現在のユーザによって作成されたかどうかを判断する

最初の方法は、現在のユーザーを取得するには、以下の方法を使用して、レコードを作成し、それをユーザーに比較している:

func fetchUserRecordID(
    completionHandler: (recordID: CKRecordID?, error: CKError?) -> Void 
) 

第二の方法はCKRecordの拡張が含まれます。

extension CKRecord{ 
    var wasCreatedByThisUser: Bool{ 
     return (creatorUserRecordID == nil) || (creatorUserRecordID?.recordName == "__defaultOwner__") 
    } 
} 

答えて

1

最初の方法は、追加レコードをフェッチするためにサーバーをもう一度呼び出すことです。欠点は、コストの時間であり、毎月のトラフィッククォータを考慮すると、コードフローが考慮する別の非同期コールバック関数があることです。このチェックを多く呼び出すと、サーバーへの不要なトラフィックが多く発生します。

2番目の方法は、すでにフェッチしたレコードに付属の値creatorUserRecordIDをチェックすることです。だからあなたはその価値をチェックするときに、それはすべてローカルデータであり、サーバーへの追加の呼び出しは必要なく、非同期処理は必要ありません。

回答ごとに:creatorUserRecordID.recordName contains "__defaultOwner__" instead of UUID shown in Dashboard__defaultOwner__は、ローカルユーザーの同義語です。

2番目の方法は、私が考えることができるほとんどのシナリオではより良い選択と思われます。

関連する問題