Соответствие KVC для чисел в подклассе NSManagedObject (CoreData) - PullRequest
0 голосов
/ 20 марта 2009

Я пытаюсь выполнить базовый тест сортировки подкласса NSManagedObject. Я установил базовый подкласс «TestClass» с двумя атрибутами: stringField и numberField. Они используют стандартный протокол доступа Obj-C 2.0:

@interface TestClass : NSManagedObject
@property (retain) NSString *stringField;
@property (retain) NSNumber *numberField;
@end

@implementation TestClass
@dynamic stringField;
@dynamic numberField;
@end

Когда я пытаюсь получить экземпляры этой сущности, я могу выбирать на основе любого атрибута. Однако, если я использую дескриптор сортировки, numberField считается не совместимым с KVC.

Внутри модели я установил numberField на Int64, но я в замешательстве. Я думал, что оболочка (NSNumber) справится с проблемой KVC. Что мне нужно сделать, чтобы сделать эту работу?

1 Ответ

2 голосов
/ 22 марта 2009

Некоторые начальные вопросы: «Включен ли компьютер?» - вопросы типа:

  1. Указывает ли ваша модель, что классом управляемых объектов для вашей сущности является TestClass?
  2. Вы уверены, что правильно указали numberField при указании ключа в дескрипторе сортировки?
  3. Является ли numberField временным атрибутом в вашей модели?

Это общие проблемы, о которых я могу подумать, которые могут вызвать такую ​​ошибку при извлечении с дескриптором сортировки, особенно с первым.

Кроме того, это не повлияет на KVC, но объявления свойств ваших атрибутов должны быть (copy), а не (retain), поскольку они являются классами "значений", которые соответствуют протоколу NSCopying и могут иметь изменяемые подклассы. Вы не хотите передавать изменяемую строку и изменять ее под Core Data. (Да, в Какао нет NSMutableNumber или NSMutableDate, но это не мешает созданию подклассов MyMutableNumber или MyMutableDate ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...