簡體   English   中英

如何在iOS應用程序中設計Model類(遵循MVC模式)

[英]How to design Model class in iOS application (following MVC pattern)

我將開始開發新的iOS應用程序,並計划實施MVC模式。 到目前為止,以下是我對模型,視圖和控制器的理解。

視圖 -負責顯示用戶界面(例如xib文件等)

控制器 -這將是模型和視圖之間的橋梁。 我們可以考慮此類別下的視圖控制器。 另外,我們可以編寫NSObject的子類來進行網絡操作(使用NSURLConnection)。

模型 -我知道它負責存儲將在視圖中顯示的數據。 但是,它如何存儲呢? 它應該是單例類還是應該是具有自定義init方法的NSObject的普通子類? 但是,它將如何持久保存數據? 如果有人可以用一個清晰​​的例子來解釋這一點,那將非常有幫助。 提前致謝!!

模型代表您的應用程序所使用的數據 它不必對數據持久性做任何事情。

通常,您必須考慮在應用程序中起作用的對象的種類。 讓我們假設一個簡單的待辦事項清單 -app。 在這種應用中,你的模型最有可能將包含一個任務 (或一些類似的概念)的 然后在Objective-C中,您可以創建一個類,添加一些有意義的屬性。 在其最基本和最簡單的版本中,它可能如下所示:

@interface Task : NSObject
@property (nonatomic, strong) NSDate *creationDate;
@property (nonatomic, strong) NSString *description;
@property (nonatomic        ) BOOL done;
@end

然后,在運行時,您可以實例化此類以對生成的對象執行某些操作。 例如,用戶可以將任務標記為已done

這些對象將駐留在OS的某個內存區域(稱為heap)中 駐留在堆上的數據不會持久保存。 為了持久化數據,您將必須使用數據持久性框架,例如Core DataRealm或raw SQLite

而且,對模型類使用單例並沒有多大意義,因為您通常想實例化它們的多個對象。 另一方面,單例的特征是在應用程序的生命周期內僅實例化了一次 這與模型層的目的是矛盾的。

MVC通常與數據訪問層或外部服務沒有任何關系。 重述MVC模式是這樣的:

模型負責將數據傳遞到View 實例

控制器負責提供適當的 UI視圖。

View負責交付UI(用戶界面)。

回顧這一點,我們可以發現,任何MVC模式都是專門設計用來控制應用程序的流程和UI的。 MVC模式未考慮任何其他方面,例如:

  1. 數據訪問(存儲,管理等)
  2. 商業邏輯
  3. 遠程服務
  4. 等等....

一般來說,假設您遵循MVC模式,則仍然需要創建自己的類(稱為服務)來與外部系統進行交互。

對於您的模型類,它們通常不是單例,而是根據需要構造的。 它們應向擁有對象提供足夠的信息,以允許與其他應用程序層進行通信,而無需擁有對象了解或實現模型服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM