Wenn ich für Datensätze mit Feldern holen, die Strings (oder andere) sind es dauert weniger als 1 Sekunde:CKQuery langsam mit CKAssets
let query = CKQuery(recordType: "Messages", predicate: NSPredicate(format: "TRUEPREDICATE"))
NSLog("Started fetching")
self.publicDb.performQuery(query, inZoneWithID: nil) { (records, error) in
NSLog("Finished fetching")
print(records!.count)
}
Aber, wenn diese Art Datensatz einen CKAsset enthält, die Zeit für die Abfrage geht bis zu mindestens 3 Sekunden. Dies ist nicht akzeptabel, wenn ich ein Bild mit 100 KB laden möchte. Es ist das gleiche, wenn ich das Asset als Referenz einfüge und es von dort lade. Was kann ich tun, um Abfragen für Datensätze zu beschleunigen, die Assets enthalten, oder gibt es andere Möglichkeiten, Assets effizienter zu speichern?
1) Assets sind groß im Vergleich zu Nur-Text-Feldern. Sie werden viel länger dauern. Nichts, was du tun kannst, außer sie kleiner zu machen. 2) Verwenden Sie eine 'CKQueryOperation' anstelle von' performQuery'. Es ist schneller und hat viel mehr Flexibilität. – rmaddy
Sie könnten Vermögenswerte woanders speichern? Verwenden einer API aus einer anderen Quelle wie Dropbox. Ich lese auch, dass in der Produktion die Dinge schneller sind, aber am besten darauf zu achten. Andere Lösungen, verwenden Sie Ihren eigenen http-Server als Backing-Store oder in der Tat verwenden Sie Links und laden Sie es überhaupt nicht. – user3069232