2014-03-24 69 views
2

我是iOS開發新手,正在嘗試在RestKit中進行一些自定義值轉換,但我無法弄清楚如何去做。我有兩個當前的問題:RestKit .20.x值轉換

  1. 我有一個base64編碼的圖像,從服務器返回一個JSON消息。它的格式如下。我使用Core Data作爲後端持久性存儲,'image'字段作爲二進制數據(NSData)存儲在Core Data中。當RestKit將base64編碼圖像轉換爲NSData對象時,出現問題,因爲存儲在sqllite數據庫中的圖像字節不正確,我無法重新顯示圖像。

    "images": [{ 
    "id": 1, 
    "recordId": 1, 
    "status": "C", 
    "type": "MUGSHOT", 
    "format": "JPEG", 
    "width": 50, 
    "height": 50, 
    "image": "/9j/4AAQSkZJRgABAQEBLAEsAA....", 
    "createBy": "blah", 
    "createDt": 1395683191483, 
    "captureDevice": null 
    }] 
    
  2. createBy日期是ms以來的紀元,它沒有被正確地轉換成NSDate對象。我明白,它期望價值在幾秒鐘內,我認爲是什麼導致了問題。

多的谷歌搜索後,我發現RKValueTransformer將允許我設立不同類別的自定義轉換(在我的情況,我想設立的NSDate和NSData的類別定製的變壓器,但RKBlockValueTransformer這是「自定義值轉換」部分下此處引用(https://github.com/RestKit/RestKit/wiki/Object-Mapping)類不出現我存在我使用RestKit .20.3和使用的CocoaPods與此Podfile安裝它。

platform :ios, '7.0' 
    pod 'RestKit', '~> 0.20.3' 

我試着在我的Podfile中添加pod'RKValueTransformers','〜> 1.0.0',但是這導致了一些編譯器問題。另外,不是RKValueTransformers project只是已經內置到RestKit中的值轉換功能的提取?

我在正確的道路上使用RKValueTransformer獲取NSDate和NSData行爲,我正在尋找?如果是這樣,我需要做些什麼才能將其包含在我的項目中?有沒有更簡單的方法讓我的應用程序正確處理存儲在Core Data中的base64編碼圖像作爲二進制字段?

編輯:這是我在我的Pods項目中的RKValueTransformers.h和.m文件。它似乎只與日期格式化程序相關:RKValueTransformers

+0

您是否在嘗試從存儲的'NSData'中創建圖像時出錯? – RaffAl

+0

沒有錯誤,但是當我將NSData傳遞到[UIImage imageWithData:]時,返回的UIImage是零。 – Dan

回答

1

如果您要將圖像數據存儲在覈心數據中,則應考慮勾選'允許外部存儲'選項。

您需要的值變換器將NSString轉換爲NSData,並且您需要base64位於中間。您需要創建一個符合<RKValueTransforming>的類。因爲您正在從NSString轉換,所以您應該實施validateTransformationFromClass:toClass:,以便您可以有效地拒絕目的地不是NSData的任何轉換。

一旦你創建你的類,並在它(imageFormatter)實例,與安裝:

[[RKValueTransformer defaultValueTransformer] insertValueTransformer:imageFormatter atIndex:0]; 

和相同的過程適用於該日期格式。

+0

由於某些原因,我的工作區中沒有RKValueTransforming協議或RKValueTransformer類。我用來安裝RestKit的Podfile被粘貼在上面。我錯過了一些其他的附加或什麼? – Dan

+0

我實際上並沒有使用pod,您是否看到項目中包含RestKit項目?你安裝了所有的依賴關係嗎? – Wain

+0

是的,它包含在我的項目中,Cocoapods也安裝了ASNetworking和其他依賴項目(請參見上面的截圖)。什麼.h文件包含你的RKValueTransforming類? RestKit .20.3文件的下載也不包括您之前在RKValueTransformers.h文件中提到的原型或類。 – Dan