我使用的是可转换属性,一切正常,而不是那些警告:
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
最佳答案
在调用自定义转换器之前,您必须将其注册到:
+[NSValueTransformer setValueTransformer:forName:]
...否则,运行时不知道变压器存在。
关于cocoa - 可变形属性的奇怪警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7780104/