2016-05-06 3 views
1

У меня есть ситуация в приложении iOS Swift, где пользователь может «настроить экран», добавив другие виды и/или изменив цвет фона представления. Когда они нажимают «Сохранить», я хочу сохранить атрибуты каждого объекта, а также цвет фона родительского представления для базы данных MySQL для последующего поиска и восстановления представлений. Все обновления данных выполняются через службы REST PHP.Как хранить данные о цвете объекта в базе данных MySQL?

В настоящее время я борюсь с данными цвета для цвета фона. Если я печатаю() цвет, я получаю что-то вроде «UIDeviceRGBColorSpace 0.866667 0.92549 1 1». Я могу также преобразовать его в NSData со следующим:

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

Однако, в любом случае, я понятия не имею, как сохранить данные в базу данных через службу PHP REST или даже то, что тип данных я хотел бы использовать.

Я иду по неверному пути, в целом? Должен ли я делать что-то вроде захвата значений RGB и Alpha и сохранять их в 4 атрибутах в базе данных, или получить шестнадцатеричное значение и сохранить это? Может быть, есть еще другой подход, который будет еще более прямым?

+0

RGB будет лучше, вы можете повторно использовать одни и те же данные для Android или Web или любой другой платформы. – ogres

+0

Вы можете хранить их как шестнадцатеричные, используя стандартное представление стиля HTML. – Chris

+0

Спасибо, огры. Каков наилучший способ получить значения RGB? Преобразовать в CIColor? Похоже, вы можете получить индивидуальные значения RGB. – Lastmboy

ответ

0

Если вы хотите сохранить всю информацию, закодированную в этом экземпляре 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!) 

Это имеет очевидный недостаток, что ваш сервер не будет иметь ни малейшего представления о том, что кодирует эти данные, так что если вы заботитесь о том, что, то getting the colour's RGB components и хранить их в качестве строки, вероятно, лучший вариант.

Смежные вопросы