2013-10-16 36 views
0

這裏的情況..從sqlite的轉換的NSString數據的NSArray

我插一個整體NSArray在一個領域我SQLite表,現在我檢索數據,並將其變成一個字符串。我怎樣才能把它再次轉換成NSArray

這是插在SQLiteNSArray的內容:

"<tbl_news:annyfksM8D:(null)> {\n \"news_content\" = \"Lorem ipsum dolor sit\";\n \"news_date\" = \"Sep 23, 2013\";\n \"news_featuredimage\" = \"uploads/1373124691956-160x120.jpg\";\n \"news_title\" = \"Lorem Ipsum2\";\n}", 

    "<tbl_news:fEgOpdgflF:(null)> {\n \"news_content\" = \"Lorem ipsum dolor sit.\";\n \"news_date\" = \"Sep 23, 2013\";\n \"news_featuredimage\" = \"uploads/2560x1440.jpg\";\n \"news_title\" = \"Lorem Ipsum3\";\n}" 

它是從parse陣列。任何人都可以知道我將如何能夠將其轉換爲NSArray。我已經試過Convert NSString to NSArray但我認爲做解決方案將不會解決我的問題。

+0

選擇一個分隔符,劈在該字符串,然後將各個對象添加到您的陣列(它可能更適合作爲'NSMutableArray'),像'[yourArray addObject:yourObject]'。 – Robert

+2

有*無法*將該字符串可靠地*轉換回數組*。看起來你只是使用'description'方法將數組轉換爲字符串以便將其存儲在SQLite中,這不是一個好主意。您應該更好地使用合適的格式,例如將數組轉換爲JSON,然後將其轉換回數組。 –

+0

其實,你插入的是一個NSDictionary的'description'。拋棄你擁有的東西並做對。 –

回答

-1

不要將NSArray作爲字符串存儲到數據庫中。將其轉換爲NSData的,它存儲爲一個blob,檢索回爲NSData的,然後再轉換回成一個NSArray:

// Convert NSArray to NSData 
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array]; 
... 

// Store it as a blob in sqlite 
sqlite3_bind_blob(insert_statement, 1, [data bytes], [data length], NULL); 

... 

// Get the bytes back fromthe database and convert it into an NSArray 
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data] 
+1

這不是一個數組。 –

+0

無法將其轉換回原始數組。 – khatz0406

+0

如果您花時間閱讀我的答案,您會看到我沒有告訴您如何將字符串轉換回數組。您當前正在存儲STRING數組的描述。我建議你將數組轉換爲可存儲爲BLOB的NSDATA,然後將其轉換回NSARRAY。 @Hot舔 - 它實際上是字典的事實不會改變答案。只要內容是基本類型或實現了encodeWithCoder,字典仍然可以轉換爲NSData。 – jnortey