2013-06-28 81 views
3

我正在開發一個小新聞閱讀器,通過對URL進行POST請求從網站檢索信息。響應是帶有未讀消息的jSON對象。使用PHP和jSON從MySQL獲取UIImage

E.g.該應用程序的最新消息有一個「2013-03-01」的時間戳。當用戶刷新表格時,它會顯示「domain.com/api/api.php?newer-than=2013-03-01」。 api.php腳本進入MySQL數據庫並獲取2013-03-01之後發佈的所有新聞,並打印出json_encoded。這是

// do something to get the data in an array 
echo $array_of_fetched_data; 

例如響應將是[{"title": "new app is coming to the market", "text": "lorem ipsum dolor sit amet...", image: XXX}]

在App然後得到的響應,並且將其解析,獲得NSDictionary,並將其添加到核心數據DB。

NSDictionary* obtainedNews = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; 

我的問題是:如何將圖像添加到MySQL數據庫,使用JSON海槽POST HTTP請求存儲,通過它,然後把它解釋爲一個UIImage的。

很明顯,要將UIImage存儲在CoreData中,它們必須轉換成/從NSData轉換。我如何使用php和jSON將NSData來回傳遞給MySQL數據庫?我應該如何將圖像上傳到數據庫? (系列化,爲BLOB,等等)

回答

2

雖然你可以Base64編碼,您的圖片,並堅持認爲到您的輸出JSON ...

我所做的,當我在你的情況是,包括URL鏈接該圖像而不是在JSON輸出,然後獲取數據:

NSString *image = @"http://dphi.ca/files/2010/01/flower.png"; 
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:image] options:NSDataReadingUncached error:&error]; 
// write the data down somewhere as to not fetch it all the time 
UIImage *uimage = [UIImage imageWithData:data]; 

這樣做,這樣可以讓你上傳時,存儲和下載它只是簡單地將圖像作爲正常圖像。