0

私の目標は、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)
...

最初にアプリの起動時に設定lastUserFetchnil、クエリの「最初のフェッチ」部分が成功しました。すべてのユーザー レコードを取得します。

しかしlastUserFetch、クエリが完了した後に日付を設定すると、次のようになります。

defaults.set(Date(), forKey: "lastUserFetch")

その部分が含まれている場合0、レコードが返されます。modificationDate > %@もちろん、私は CloudKit ダッシュボードでレコードを変更します。レコードmodificationDateが更新され、私の日付よりも新しいことがわかりますlastUserFetchが、それでも検索結果には返されません。

modificationDate比較とrecordID INクエリを組み合わせるにはどうすればよいですか?

4

1 に答える 1