在數據模型中,我將顏色定義爲可變形屬性並將ColorTransformer分配給它。它的工作原理,在同一個轉換器的幫助下,我可以將它綁定到ColorPicker,保存並打開文檔。 但是,當我嘗試從代碼訪問它:爲什麼我的NSColor類NSConcreteData?
NSColor * color = corner.color;
NSLog(@"Corner Color = %@\n%@", color, color.class);
我有NSMutableConcreteData的對象:
bezierMesh[22164:730708] Corner Color = <040b7374 7265616d 74797065 6481e803 84014084 8484074e 53436f6c 6f720084 84084e53 4f626a65 63740085 84016301 84046666 66660183 6eb7613d 8357703e 3e8352b8 1e3f86>
NSConcreteMutableData
修改getter和setter沒有幫助:
- (NSColor *)color {
[self willAccessValueForKey:@"color"];
NSData *colorData = [self primitiveValueForKey:@"color"];
[self didAccessValueForKey:@"color"];
if (colorData == nil) {
return nil;
}
NSColor * color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
return color;
}
- (void)setColor:(NSColor *)color {
NSLog(@" -------------- > Setting color %@", color);
NSData * theData=[NSArchiver archivedDataWithRootObject:color];
[self willChangeValueForKey:@"color"];
[self setPrimitiveValue:theData forKey:@"color"];
[self didChangeValueForKey:@"color"];
}
它導致錯誤:
如何獲取顏色NSColor?
這是我們在這裏討論的'NSValueTransformer'子類嗎?如果是這樣,那麼這不是你如何從代碼中使用它。 – trojanfoe 2014-10-27 13:49:18
BMColorTransformer是NSTransformer的子類。但也許有一個正確的問題:如何在代碼中使用NSTransformer子類? – 2014-10-27 17:29:16
NSValueTransformer當然是 – 2014-10-27 17:47:27