2012-07-21 35 views
0

我有一個類,其中包含從我的服務器下載數據的方法。這是JSON的形式,但被解析並放入數組中。由於這是一個「模型」文件,使多個「控制器」可以訪問這些數據的最佳方法是什麼?擁有應用程序範圍數組的最佳方法?

+0

全局變量?辛格爾頓? [[UIApplication sharedApplication]委託]的屬性? – 2012-07-21 18:01:06

+0

謝謝,我猜他們都有他們的優點和缺點,所以這將是推薦的方法? – 2012-07-21 18:02:55

+1

我建議你讓它成爲你的應用程序委託的屬性。 – 2012-07-21 18:04:02

回答

2

將它掛在應用程序委託上,將其粘貼到全局變量中,或者在適當的位置聲明一個返回它的類方法。

更好的是,現在開始考慮建立一個適當的模型層,其中可以管理這些數據。隨着應用程序的發展,這將使未來更容易重構。

+0

模型圖層,你指的是核心數據? – 2012-07-21 18:05:36

+0

不一定;核心數據無疑是一個出色的數據持久性工具,我強烈建議。如果你沒有保存那麼多的數據或者你的所有數據都是客戶/服務器,那麼 - 不 - 不需要。 「模型層」是一個通用術語。 – bbum 2012-07-21 19:17:43

+0

我將堅持從一個相當複雜的後端數據庫中存儲大量數據,所以我認爲核心數據是一條可行的路。感謝您推薦它。 – 2012-07-21 20:28:32

0

您可以使用數組對象創建類的單例對象。並且通過使用類方法,您可以將該數組放在應用程序中的任何位置。

例如

在Cardnames.h文件

#import <Foundation/Foundation.h> 

@interface CardNames : NSObject 

@property (nonatomic, retain) NSMutableArray *CardNamesArray; 

+(CardNames*) getCardsList; 

@end 

在Cardnames.m文件

#import "CardNames.h" 

@implementation CardNames 

@synthesize CardNamesArray; 

static CardNames *cards = nil; 

+(CardNames*) getCardsList 
{ 
    @synchronized(self) 
    { 
     if(cards == nil) 
     { 
      cards = [[self alloc] init]; 

      cards.CardNamesArray = [[NSMutableArray alloc] init]; 

      /// code to fill array 

     } 
     return cards; 
    } 
} 
@end 

和其他類u可以使用這樣

#import "CardNames.h" 
. 
. 
. 
NSMutableArray *CardsArray = [[CardNames getCardsList] CardNamesArray]; 
相關問題