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

标签 php ios mysql swift colors

我在 iOS Swift 应用程序中遇到这样一种情况,用户可以通过添加其他 View 和/或更改 View 的背景颜色来“自定义屏幕”。当他们点击保存时,我想将每个对象的属性以及父 View 的背景颜色存储到 MySQL 数据库中,以供以后检索和重建 View 。所有数据更新均通过 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 encoding – 以 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!)

这有一个明显的缺点,即您的服务器将不知道该数据编码的内容,因此如果您关心这一点,那么 getting the colour's RGB components并将它们存储为字符串可能是更好的选择。

关于php - 如何在 MySQL 数据库中存储对象的颜色数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37067791/

相关文章:

c# - C# 和 PHP 之间的对称加密

ios - 更改拉动刷新事件指示器

php - mysql连接问题

php - 聊天验证密码和用户名获取IP和端口

php - 安装 nginx 后找不到 Laravel 路由

ios - UIActivityIndi​​cator 在同一方法中启动和停止

Mysql - 填充缺失月份的行

java - TOP [N] 记录 Group By per user query in the best possible way

PHP MySQL 使用 href 或按钮更改 SELECT 语句

ios - 在音频单元渲染周期中处理不同数量的样本