私の目標は、s のUser
配列で指定した CloudKit からレコードを取得することCKRecord.ID
ですが、ローカルで追跡している最終更新日よりも最近更新された場合に限ります。
次の CloudKit クエリを実行しています。
var predicate:NSPredicate
if let lastChecked = defaults.object(forKey: "lastUserFetch") as? Date{
//Subsequent fetches
predicate = NSPredicate(format: "modificationDate > %@ AND recordID IN %@", argumentArray: [lastChecked, userRecordIDs])
}else{
//First fetch
predicate = NSPredicate(format: "recordID IN %@", argumentArray: [userRecordIDs])
}
let query = CKQuery(recordType: "User", predicate: predicate)
let operation = CKQueryOperation(query: query)
...
最初にアプリの起動時に設定lastUserFetch
しnil
、クエリの「最初のフェッチ」部分が成功しました。すべてのユーザー レコードを取得します。
しかしlastUserFetch
、クエリが完了した後に日付を設定すると、次のようになります。
defaults.set(Date(), forKey: "lastUserFetch")
その部分が含まれている場合0
、レコードが返されます。modificationDate > %@
もちろん、私は CloudKit ダッシュボードでレコードを変更します。レコードmodificationDate
が更新され、私の日付よりも新しいことがわかりますlastUserFetch
が、それでも検索結果には返されません。
modificationDate
比較とrecordID IN
クエリを組み合わせるにはどうすればよいですか?