2016-09-15 2 views
9

Ich habe eine iOS-App mit RestKit-Bibliothek und CoreData. Seit Xcode8 kann ich viel mehr Logs sehen als vorher und einer von ihnen ergibt für mich keinen Sinn.NSManageObjectContext - Die Klasse ist nicht Schlüsselcodierung-kompatibel für den Schlüssel @ count

error: An observer of NSManagedObjectContextDidSaveNotification illegally threw an exception. Objects saved = { 
inserted = "{(\n)}"; 
managedObjectContext = "<_PFWeakReference: 0x600000621560>"; 
updated = "{(\n ...)}"; 
} 
and exception = [<_PFWeakReference 0x600000621560> valueForUndefinedKey:]: this class is not key value coding-compliant for the key @count. with userInfo = { 
NSTargetObjectUserInfoKey = "<_PFWeakReference: 0x600000621560>"; 
NSUnknownUserInfoKey = "@count"; 

Bisher, was kann ich verstehen, dass ein schwacher Verweis auf die managedObjectContext (oben in dem Fehler) einen falschen Schlüssel verwendet, aber ich kann nicht herausgefunden, wie es zu debuggen.

Alle NSManagedObjects, die mit diesem Problem zusammenhängen, scheinen Collections zu sein. Meist NSSet aus einer OneToMany- oder ManyToMany-Beziehung.

Dann fand ich diese Apple documentation:

den ganze Sammlung Betreiber, mit Ausnahme von @count, erfordern einen Schlüssel Weg rechts von der Sammlung des Bedieners.

Allerdings kann ich keine Prädikat oder CoreData-Anfrage sehen, die ich gemacht habe, die derzeit diesen Schlüssel verwenden.

Ich generierte alle meine NSManagedObject-Modelle und überprüfe alle umgekehrten Beziehungen zwischen ihnen, aber es half mir nicht, es loszuwerden.

Diese App läuft gut, aber ich konnte keine Lösung finden, um diese Warnung zu entfernen.

+2

Ich denke, es ist nicht Sie machen den Schlüssel, aber es RKManagedObjectStore.m Zeile 55. – JulianM

+0

Haben Sie jemals einen Weg gefunden, diese Warnung loswerden? –

Antwort

1

Ich glaube, das wurde in PR 2449 behoben, die in development branch zusammengeführt wurde. Dieser PR enthält this commit, die das Problem beheben.

Ich bin mir nicht sicher, ob der PR in master Zweig zusammengeführt wurde, also nicht sicher, ob es über Pods verfügbar ist. Aber Sie können in Ihrem Podfile ein bestimmtes Commit anstelle einer Version angeben. Also, wenn Sie diese an:

pod 'RestKit', :git => 'https://github.com/RestKit/RestKit.git', :commit => '9cbba9eb1b490c3c5e2873c8fba8e9c0fec1bf07' 

wie vorgeschlagen here es funktionieren sollte!

Aber vielleicht ist dieser Commit nicht kompatibel mit Swift 3, bin ich mir nicht sicher. Aber vielleicht verwenden Sie nicht Swift 3 ...

Verwandte Themen