前提・実現したいこと
CloudKitに関して質問です。
開発段階ではレコードの編集をうまくできていたのですが、
先日、TestFlightで何名かにテスト版を配布したところ、編集ができないことがありました。
いくつかの失敗例を見たところ、
レコード作成者でないユーザーが編集しようとするとうまくいかないのでは、と推測できました。
こちらは CloudKit Dashboard で確認できるレコードの詳細です。
この緑で隠した部分が一致しないといけないのでは、と思いました。
既存のレコードを編集するときは以下のようにおこなっています。
Swift
1func editRecord() { 2 3 // パブリックデータベースにアクセス 4 let publicDatabase = CKContainer.default().publicCloudDatabase 5 6 // レコードの検索条件を作成 7 // 〈accountID〉はレコードのフィールド名、〈myID!〉はその中身 8 // これが〈myID!〉だと成功するが、他人のレコードを編集しようとするとエラーになると推測 9 let predicate = NSPredicate(format: "accountID == %@", argumentArray: [myID!]) 10 let query = CKQuery(recordType: "Accounts", predicate: predicate) 11 12 publicDatabase.perform(query, inZoneWith: nil, completionHandler: {(records, error) in 13 14 if let error = error { 15 print("編集エラー1: (error)") 16 return 17 } 18 19 for record in records! { 20 21 // 編集するフィールド名とそこに入れる新しい値 22 record["currentLocation"] = CLLocation(latitude: 40.689283, longitude: -74.044368) 23 24 self.publicDatabase.save(record, completionHandler: {(record, error) in 25 26 if let error = error { 27 print("編集エラー2: (error)") 28 return 29 } 30 print("編集成功") 31 }) 32 } 33 }) 34}
開発段階ではすべてのレコードを私が作成・編集していたので、エラーが出ることはありません。
この推測が正しいのか、
またその場合、レコード作成者と異なるユーザーが編集する場合どのように実現すればいいか、
お教えくださると幸いです。
発生している問題
レコード作成者以外が編集できない(推測)。
編集に失敗しても、アプリがクラッシュする等はない。
補足情報(FW/ツールのバージョンなど)
Xcode 11.6
Swift 5
ここまで読んでくださり、ありがとうございます。
質問に至らぬ点があるかもしれませんが、どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。