[英]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 Data
, Realm
或raw SQLite
。
而且,對模型類使用單例並沒有多大意義,因為您通常想實例化它們的多個對象。 另一方面,單例的特征是在應用程序的生命周期內僅實例化了一次 。 這與模型層的目的是矛盾的。
MVC通常與數據訪問層或外部服務沒有任何關系。 重述MVC模式是這樣的:
模型負責將數據傳遞到View 實例 。
控制器負責提供適當的 UI視圖。
View負責交付UI(用戶界面)。
回顧這一點,我們可以發現,任何MVC模式都是專門設計用來控制應用程序的流程和UI的。 MVC模式未考慮任何其他方面,例如:
一般來說,假設您遵循MVC模式,則仍然需要創建自己的類(稱為服務)來與外部系統進行交互。
對於您的模型類,它們通常不是單例,而是根據需要構造的。 它們應向擁有對象提供足夠的信息,以允許與其他應用程序層進行通信,而無需擁有對象了解或實現模型服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.