JSON для основных данных - PullRequest
0 голосов
/ 03 января 2012

Я пытаюсь сохранить ответ JSON для локальных данных ядра для моего приложения. Я слежу за следующей реализацией для этого: https://stackoverflow.com/a/2363996/127036

Вот мой код:

NSString *objectName = @"Post";
NSManagedObject *managedObject = [NSEntityDescription insertNewObjectForEntityForName:objectName inManagedObjectContext:moc];
[managedObject setValuesForKeysWithDictionary:structureDictionary];

Компилятор возвращает следующую ошибку:

-[__NSCFDictionary entity]: unrecognized selector sent to instance 0x6dc6fa0

При попытке выполнить:

setValuesForKeysWithDictionary

Пожалуйста, направьте меня в правильном направлении, чтобы решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 11 марта 2013

Это сообщение довольно старое, и я уверен, что Vibhor Goyal уже перешел. Но в случае, если кто-то столкнется с этой же проблемой, причина, по которой он получает

-[__NSCFDictionary entity]: unrecognized selector sent to instance

Это потому, что в его модели Post я уверен, что у него есть дочерние объекты, вероятно, что-то вроде «comments», что, вероятно, является отношением ко-многим к модели «Comment».

Затем в своей структуре StructureDictionary у него, вероятно, есть обычные поля значения ключа, соответствующие его модели Post, а для ключа "comments" у него, вероятно, есть NSSet NSDictionaries для значения.

Таким образом, причина, по которой он получает ошибку селектора сущностей, заключается в том, что изнутри основные данные ожидают, что «комментарии» будут набором, заполненным экземплярами «Комментарий», которые должны быть экземплярами NSManagedObject, но вместо этого они получают экземпляры NSDictionary. Поэтому, когда он запрашивает «сущность» из каждого «комментария», он выбрасывает нераспознанную ошибку селектора.

Надеюсь, это поможет кому-то в будущем.

0 голосов
/ 03 января 2012

Я не вижу setValuesForKeysWithDictionary в центре разработки для NSManagedObject

http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject.html

Возможно, вам придется проходить и выполнять их по одному с помощью setValue: forKey:

...