#cocoa #core-data
#cocoa #core-данные
Вопрос:
Я использовал трансформируемые атрибуты, и все работает нормально вместо этих предупреждений:
15.10.11 22:14:07,191 cdtool: CoreData: warning: no NSValueTransformer with class name 'ArrayToDataTransformer' was found for attribute 'directions' on entity 'DatabaseConnections'
15.10.11 22:14:07,191 cdtool: CoreData: warning: no NSValueTransformer with class name 'ArrayToDataTransformer' was found for attribute 'updateChoices' on entity 'DatabaseConnections'
15.10.11 22:14:07,193 cdtool: CoreData: warning: no NSValueTransformer with class name 'ArrayToDataTransformer' was found for attribute 'testingResult' on entity 'DestinationsListWeBuy'
может кто-нибудь сказать, как удалить это предупреждение.
конечно, все правильно, атрибут необязательный, трансформируемый.
ниже приведена реализация класса:
#import <Foundation/Foundation.h>
@interface ArrayToDataTransformer : NSValueTransformer {
}
@end
#import "ArrayToDataTransformer.h"
@implementation ArrayToDataTransformer
(BOOL)allowsReverseTransformation {
return YES;
}
(Class)transformedValueClass {
return [NSData class];
}
- (id)transformedValue:(id)value {
//Take an NSArray archive to NSData
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:value];
return data;
}
- (id)reverseTransformedValue:(id)value {
//Take NSData unarchive to NSArray
NSArray *array = (NSArray*)[NSKeyedUnarchiver unarchiveObjectWithData:value];
return array;
}
@end
Комментарии:
1. Я хочу практиковать TDD. Есть ли способ, которым я могу перехватить это предупреждение и сделать утверждения, чтобы обеспечить наличие такого трансформатора?
2. вы получили ответ. У меня такая же проблема
Ответ №1:
Прежде чем вы сможете вызвать пользовательский преобразователь, вы должны зарегистрировать его с помощью:
[NSValueTransformer setValueTransformer:forName:]
… в противном случае среда выполнения не знает о существовании трансформатора.
Комментарии:
1. я создаю конфигурацию в конфигурации пользовательского интерфейса core data. Где я должен разместить этот setValueTransformer в коде.