ฉันยังใหม่กับ Realm และฉันได้เห็นคำตอบนี้เกี่ยวกับการจำกัดการค้นหาในขอบเขตแล้ว (ในที่อื่นๆ อีกมากมาย ด้วย).
ปัญหาของฉันคือโค้ดต่อไปนี้ใช้เวลานานเกินไปในการโหลดข้อมูลลงในอาเรย์เมื่อปริมาณข้อมูลมีขนาดใหญ่:
RLMResults* rlm = [[Item class] objectsWithPredicate:predicate]; // this loads fast
NSArray* results = [rlm valueForKey:@"self"]; // this is slow
เท่าที่ฉันรู้ว่าฉันไม่สามารถจำกัดผลลัพธ์โดยใช้เพรดิเคตได้เช่นกัน ดังนั้นฉันจึงพยายามจำกัดผลลัพธ์เช่น ตัวอย่างนี้ ในเว็บไซต์ขอบเขต ดังต่อไปนี้:
RLMResults* rlm = [[Item class] objectsWithPredicate:predicate]; // this loads fast
NSMutableArray* results = [@[] mutableCopy];
for (NSInteger i = 0; i < 5; i++) {
Item* item = rlm[i]; // only the first call (when i == 0) is slow here
[results addObject:item];
}
ดังนั้นสิ่งที่น่าสนใจที่นี่คือเฉพาะการโทรครั้งแรกของ rlm[i] (rlm[0]) เท่านั้นที่ใช้เวลานาน และหลังจากนั้น (เมื่อฉัน > 0) การโทรจะทำงานอย่างรวดเร็ว
ฉันทำอะไรผิดหรือเปล่า? หรือมีวิธีใดบ้างที่จะโหลดข้อมูลจำนวนมากได้เร็วขึ้นหรือจำกัดผลลัพธ์?
ขอบคุณมาก!