странные предупреждения для трансформируемого атрибута

#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 в коде.