Ich habe RLMResults, die ich durchlaufen muss, eine potenziell "lang laufende" Download-Aufgabe, (lange genug sollte es nicht auf dem Haupt-Thread sein), und jedes Objekt aktualisieren mit dem Ergebnis dieses Downloads. Die neueste Iteration auf dem, was ich versucht habe (nach der Dokumentation für eine Antwort Scheuern) ist so etwas wie dies, obwohl dies offensichtlich nicht wie beabsichtigt funktioniert, aber es ist ein Ausgangspunkt für Demonstrationszwecke:Realm - Batch update RLMResults auf Hintergrund thread
RLMResults *objectsToSaveImagesFor = [self allObjectsToSaveImagesFor];
for (Object *object in objectsToSaveImagesFor) {
RLMThreadSafeReference *objectRef = [RLMThreadSafeReference referenceWithThreadConfined:object];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
RLMRealm *realm = [RLMRealm realmWithConfiguration:self.realm.configuration error:nil];
Object *threadSafeObject = [realm resolveThreadSafeReference:objectRef];
BOOL success = [self downloadImageForObject:threadSafeObject];
[realm transactionWithBlock:^{
threadSafeObject.imageSaved = success;
}];
});
}
I Ich habe etwa ein Dutzend Wiederholungen dafür versucht und es wird mir nicht gelingen, den kanonischen Realm-Weg zu finden, was ich tun möchte, nämlich eine große Anzahl von Bildern herunterzuladen (zu Tausenden) und jedes meiner Realms zu aktualisieren Objekte mit dem Ergebnis des Downloads auf einem Hintergrundthread.
Es mir nicht ein hast du eine Thread-sichere Bezug auf die gesamte bekommen könnte RLMResults ... Das ist es, danke! – Mike