我有一个CoreData的Mac应用程序,我正在为它编写一个iOS前端。目前一切都很顺利,我可以成功地在iOS版本中读取使用Mac应用程序创建的文件。但是我无法将以NSData对象存储为数据模型中的NSColor数据读入到iOS版本应用程序中的UIColor对象中。
总结一下:我该如何将包含归档的NSColor对象的NSData对象转换为iOS设备上适当的UIColor对象?
到目前为止,我所做的事情(虽然不太美观)是将NSData读入NSString中(数据似乎是ASCII编码的)。 RGB值存在于NSString中,稍加解析即可提取出来创建一个新的UIColor。
我不确定这是一个全局解决方案还是只在我的情况下有效,但这是一个开始。
显然,更好的方法是序列化为NSArray,我将来会研究一下。
请查看Core Data编程指南中的以下内容:
您尝试将NSColor
替换为UIColor
了吗? UIColor
实现了NSCoding
协议。
// - (NSColor *)color
- (UIColor *)color
{
[self willAccessValueForKey:@"color"];
// NSColor *color = [self primitiveColor];
UIColor *color = [self primitiveColor];
[self didAccessValueForKey:@"color"];
if (color == nil)
{
NSData *colorData = [self colorData];
if (colorData != nil)
{
color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
[self setPrimitiveColor:color];
}
}
return color;
}
NSColor
/UIColor
。你可以创建自己的NSObject
子类,包含 RGBA 成分并进行归档,或者直接归档这些值。 - Dave DeLong