Magische Datensatz nicht speichern
Ich bin mit Magischen Rekord:
https://github.com/magicalpanda/MagicalRecord
Ich bin versucht zu retten, Datensätze, bekomme ich die von meiner website auf die sqllite-Datenbank mit Magischen Datensatz und Core Data, aber ich erhalte die Fehlermeldung:
MR_saveWithErrorCallback:](0xaaa6bd0) NO CHANGES IN CONTEXT <NSManagedObjectContext (0xaaa6bd0): *** BACKGROUND SAVING (ROOT) ***> on *** BACKGROUND THREAD *** - NOT SAVING
Hier ist der code:
for(int i = 0; i < count; i += 1)
{
//results = array of all services from site
NSDictionary * result = [results objectAtIndex: i];
NSNumber * sid = @([[result objectForKey: @"id"] intValue]);
NSNumber * parent = @([[result objectForKey: @"parent"] intValue]);
Service * service = [Service createEntity];
NSString * image = [NSString stringWithFormat: @"%@", [result objectForKey: @"image"]];
NSString * name = [NSString stringWithFormat: @"%@", [result objectForKey: @"name"]];
NSString * machine_name = [NSString stringWithFormat: @"%@", [result objectForKey: @"machine_name"]];
[service setDate: [NSDate date]];
[service setSid: sid];
[service setName: name];
[service setImage: image];
[service setParent: parent];
[service setMachine_name: machine_name];
[[NSManagedObjectContext defaultContext] saveNestedContexts];
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem ist, dass Sie nicht sparen den richtigen Kontext. Wenn Sie einen Blick auf die Quelle,
[Service createEntity]
schafft die ManagedObject in den Kontext des aktuellen Threads. Nicht in der, die Bezeichnung defaultContext.Also, was Sie tun müssen, ist, statt
[[NSManagedObjectContext defaultContext] saveNestedContexts]
sollten Sie speichern werden, die den Kontext für den aktuellen thread (ich.e-Rahmen, die die ManagedObject erstellt wurde). Also der code sollte[[NSManagedObjectContext MR_contextForCurrentThread]
Haben Sie versucht, mit dem
saveInBackgroundWithBlock:
utility-Methode?Wenn nicht, möchten Sie vielleicht versuchen, so etwas wie den folgenden code ein. Beachten Sie, dass Sie speichern Sie alle Ihre Objekte in einem Rutsch in den hintergrund und führen Sie dann die Abschluss-block auf der Haupt-thread:
Andere als die, können Sie sehen, wenn
[[NSManagedObjectContext defaultContext] hasChanges]
gibt JA zu prüfen, ob es ein Problem mit dem speichern oder das Unternehmen selbst.In meine swift-Projekt, das ich tun:
So, dann muss ich Folgendes tun, um auf die Festplatte speichern:
bewegen Sie die Linie
außerhalb der for-Schleife hat es bei mir