2016-05-06 13 views
1

私は、他のビューを追加したり、ビューの背景色を変更したりすることで、ユーザーが「スクリーンをカスタマイズする」ことができるiOS Swiftアプリケーションに状況があります。彼らが保存をタップすると、後でビューを取得して再構築するために、各オブジェクトの属性と親ビューの背景色をMySQLデータベースに保存します。すべてのデータ更新は、PHP RESTサービスを通じて行われます。オブジェクトのカラーデータをMySQLデータベースに保存するにはどうしたらいいですか?

私は現在、背景色の色データに苦労しています。色をprint()すると、 "UIDeviceRGBColorSpace 0.866667 0.92549 1 1"のようなものが得られます。私はまた、次のようにNSDataのに変換することができます:

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

しかし、いずれの場合も、私はどのようにPHP RESTサービスを介してデータベースにデータを保存するかさえ、私が使用するどのようなデータ型見当がつかない。

私は間違った道をずっと下っていますか?私はRGB値とアルファをつかみ、それらをデータベースの4つの属性に保存するか、または16進値を取得して保存するような何かをするべきでしょうか?おそらく、もっと真っ直ぐ進む別のアプローチはまだありますか?

+0

RGBが良ければ、AndroidやWebなどのプラットフォームで同じデータを再利用できます。 – ogres

+0

標準HTMLスタイルの表現を使用して、16進数としてそれらを保存することができます。 – Chris

+0

ありがとう、鬼。 RGB値を取得する最良の方法は何ですか? CIColorに変換しますか?それはあなたがそれからRGB個々の値を得ることができるように見えます。 – Lastmboy

答えて

0

NSColor/UIColorインスタンスでエンコードされたすべての情報(元の色空間の元の正確な値はRGBではない可能性があります)を保持したい場合、文字列としてエンコードする必要がありますバイナリブロブは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と文字列としてそれらを保存するには、おそらくより良いオプションです。

関連する問題