2011-04-11 55 views
0

我的UILabel我如何保存的NSData到我的數據庫

UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; 
label1.text = @"LABEL AREA"; 

我想將它保存在我的DATABSE(SQLite的)一個對象。

我的想法是使用

[NSKeyedArchiver archivedDataWithRootObject:label1];    //step1 

這個對象轉換爲NSData的,這NSData的轉換爲的NSString(第二步),然後保存的NSString數據庫(步驟3)。

當我需要我的UILabel。我可以從數據庫中獲得的NSString,將其轉換爲NSData的,並使用

[NSKeyedUnarchiver unarchiveObjectWithData:]; 

讓我的UILabel。

但我在「第2步」中遇到問題。當我使用

NSString *strWithEncode = [[NSString alloc] initWithData:dataRaw encoding:NSUTF8StringEncoding]; 

我得到一個空對象。我不知道原因。 爲什麼?

非常感謝!

+2

如果你的數據不是一個正確的字符串,那很可能會失敗。幾乎所有支持二進制數據的數據庫都是什麼類型的,如果它肯定需要是一個字符串(例如xml),那麼就使用base64編碼。 – Joe 2011-04-11 13:00:38

回答

0

你既可以一) Store中的數據爲BLOBB)商店的字符串,而不是實際的字符串文本。 B似乎是一個更好的選擇,因爲您將存儲較少的數據,並且數據庫的內容將是人類可讀的,如果您稍後需要該信息進行調試。

0

由於NSData表示編碼的UILabel而不是UTF-8編碼的NSString,因此試圖從數據初始化UTF-8字符串幾乎肯定不起作用。如果您絕對必須將數據存儲爲字符串,請嘗試使用某種形式的數據到字符串編碼。嘗試使用base32或base64。

相關問題