swift - 将 UIColor 存储在 CoreData 中

标签 swift core-data nsdata uicolor transformable

如何在 64 位 上不丢失地存储 UIColor 到 CoreData? 在 32 位上,返回正确的 UIColor。

CoreData 设置

  • 属性类型:可转换
  • NSManagedObject 子类属性:@NSManaged var color: UIColor?

存储颜色值之前

color.getRed(&red, green: &green, blue: &blue, alpha: &alpha)

输出例如64 位红色:

0.20000000000000018  

32位输出红色

0.199999928

从 CoreData 获取颜色后

color.getRed(&red, green: &green, blue: &blue, alpha: &alpha)

输出例如64 位红色:

0.20000000298023224 

在 32 位上输出红色:

0.199999928

产生的问题

使用 == 的颜色比较在 64 位上失败,因为值略有不同。在 32 位上一切正常,颜色比较成功。

最佳答案

NSKeyedArchiver.archivedDataWithRootObject(color) 分配给数据变量并将其保存到您的核心数据存储中。

要读取数据,只需将 NSKeyedUnarchiver.unarchiveObjectWithData(colorData) 分配给颜色变量即可。


如果您想知道如何比较 float ,您可以随时引用 this .

关于swift - 将 UIColor 存储在 CoreData 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30434940/

相关文章:

ios - 如何将这几种不同的值类型组合到 NSData 中呢?

ios - CoreData 限制相关实体的批量大小

iOS 核心数据数据保护不起作用

objective-c - 如何使用按位运算符将带有 NSData 字节的 Obj-C 方法转换为 Swift

ios - 快速更改 UITabBarItem 图像和色调颜色

ios - 不要删除 UITable 的第一行

ios - 将 Gif 图像转换为 NSData

ios - 警告 : Unbalanced calls to begin/end appearance transitions for QLRemotePreviewContentController

Swift 三元运算符函数调用?

ios - 如何在 iOS 中为 Web View 设置特定大小的自定义字体?