繁体   English   中英

如何在MySQL数据库中存储对象的颜色数据?

[英]How can I store an object's color data in MySQL database?

我有一个iOS Swift应用程序的情况,用户可以通过添加其他视图和/或更改视图的背景颜色来“自定义屏幕”。 当他们点击保存时,我想将每个对象的属性以及父视图的背景颜色存储到MySQL数据库中,以便以后检索和重建视图。 所有数据更新都通过PHP REST服务完成。

我目前正在努力处理背景颜色的颜色数据。 如果我打印()颜色,我会得到类似“UIDeviceRGBColorSpace 0.866667 0.92549 1 1”的内容。 我还可以使用以下代码将其转换为NSData:

let data = NSKeyedArchiver.archivedDataWithRootObject(self.view.backgroundColor!)

但是,在任何一种情况下,我都不知道如何通过PHP REST服务将数据保存到数据库,甚至不知道我将使用哪种数据类型。

我完全走错了路吗? 我应该做一些事情,比如抓住RGB值和Alpha并将它们保存到数据库中的4个属性,或者获取十六进制值并存储它? 也许,还有一种不同的方法会更直接吗?

如果你关心保留NSColor / UIColor实例中编码的所有信息(原始颜色空间中的原始精确值,可能不是RGB,校准等),需要将其编码为字符串(而不是例如二进制blob,也可以使用MySQL),您可以使用base64编码 - 以base64编码形式向服务器发送颜色,并在检索时将其解码。

let color = NSColor.blackColor()
let data = NSKeyedArchiver.archivedDataWithRootObject(color)

// this can go in your database
let base64EncodedColorString = data.base64EncodedStringWithOptions([])

let decodedColorData = NSData(base64EncodedString: base64EncodedColorString, options: [])

NSKeyedUnarchiver.unarchiveObjectWithData(decodedColorData!)

这有明显的缺点,你的服务器将不知道该数据编码的内容,所以如果你关心它,那么获取颜色的RGB组件并将它们存储为字符串可能是更好的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM