簡體   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