2012-08-23 163 views
3

我一直在爲此苦苦掙扎了好幾天,似乎無法弄清楚如何最好地構造這個。我絕不是目標C的專家。開發適用於REST API的iOS SDK

我們爲Drupal應用程序開發了一個RESTful API,並且我們目前在App Store中有一個使用ASIHTTPRequest連接的iOS應用程序。但是,正如你們中的一些人可能知道的那樣,它不再被支持。所以我們決定過渡到AFNetworking,並希望以這樣的方式構建它,以便我們可以將它作爲一個庫進行開源,以便與我們的API一起使用。

我們當前的應用程序正在使用CoreData並存儲所有進入SQLite數據庫的數據。在目前的工作流程看起來是這樣的:

Get請求 接收JSON 解析和地圖JSON到CoreData NSManagedObject 保存上下文

我有什麼路徑你們幾個問題,建議對我來說,開源作爲圖書館。

只給一個粗略的概述:

我們有會員,團體,事件,消息(在其最簡單的)。

有幾種方法我一直在想的要對此:

添加AFNetworking API調用和解析/映射方法的NSManagedObject

我喜歡這個概念,但我我不確定它是否合理。核心數據模式然後成爲API的模式,這很好。但我擔心的是 - 如果其他開發人員使用它不想在他們的應用程序中使用核心數據呢?最重要的是,我不確定如何使用返回多個實例的方法。例如,如果我有一個NSManagedObject組,我可以在哪裏調用獲取組的索引?此外,我們是否將某人鎖定到特定的核心數據模型中,這是件好事嗎?

有知道如何從一個API取回自己的數據,它的地方解析到自己的屬性,然後出了公共圖書館的做映射到NSManaged對象

這樣的聲音分離的對象不錯,但是我有非常相似的物體,它們的性質非常相似。

分類

我讀的東西在這裏,我可以用一個類來添加方法 add additional properties to NSManagedObject with secondary .h .m files 我不知道,即使是有道理的。

API類,核心數據類和映射器類。

絕對凌亂。

更好的建議歡迎!

我試着去看一些其他的例子,但我認爲我沒有足夠的Objective C知識來正確解剖它們。

的主要目標是:

摘要向被重複使用在其他應用程序的請求庫。 爲對象強制執行架構是一個加號 不要將人員鎖定到CoreData模型或根本不使用CoreData。

在此先感謝您的幫助!

回答

2

如果您試圖執行您的模式,您應該創建自己的模型類。這可以通過NSObject的子類(或任何有意義的)來完成,或者通過Core Data/NSManagedObject Route來完成。如果你這樣做,只需包含所需的文件。

就我個人而言,我會分開管理服務器調用。看看Facebook SDK 3.0可能會給你一些幫助。基本上創建一個或多個類來處理您的服務器調用,解析信息並將其傳回給代理/塊,這對您的用戶是有意義的。

在這裏您可以返回您的自定義對象(或它們的數組等)。您可以在任何網絡層之上構建這一切。我是AFNetworking的粉絲,但任何工作。只需在子項目/子模塊/等中包含所需的代碼即可。只要確保把所有使用的庫都歸功於你。

另一種選擇是創建一個框架或靜態庫,將其全部封裝在一起,並且不允許其他開發人員更改您的內部代碼。希望這是一個開始。

+0

嗨,詹姆斯,感謝您的迴應!我只想澄清幾件事:我已經有一個核心數據模式,所以我可以擴展NSManagedObjects以在API上強制執行模式。但是你建議分開API調用的類,解析數據並返回一些擴展NSObject的東西。是否有可能翻轉並擴展API調用類返回爲託管對象的內容?對不起,我可能在這裏錯過了很多要點。我讀了幾次,並不能特別理解。你不介意把它分解一點(對於n00b :) – MrMaksimize

+0

圍繞這一點,我認爲它開始有意義。基本上,你說要創建幾個模型 - 組,消息,用戶等。然後有一個控制器/控制器,使api調用,解析器,並填充這些模型,然後返回它們。然後爲NSManagedObjects播種,並根據模型將這些對象的數據填充到它們中。是對的嗎? – MrMaksimize