2013-08-18 43 views
-3

我在我的項目中有1個模型,它支持來自rss的解析數據。我想從我的控制器調用這些數據。 Bun我不想再創建一個模型。在互聯網上根本沒有關於它的任何信息。如何在控制器之間使用模型

+3

」根本就沒有關於互聯網的任何信息。「 < - 錯。 – Lance

回答

1

爲什麼不使用屬性?

//In SomeViewController.h 

@property (nonatomic, strong) SomeClass *data; 

然後你需要的地方在通過它,你目前的控制器模態或可能之前推導航控制器

這不會創建模型的兩個副本,它只是將對象的引用傳遞給視圖控制器,以便可以訪問它。

另一種選擇是使用Singleton模式(谷歌是你的朋友在這裏)。我更喜歡第一種方法,但有時候單身人士很方便:)

+0

它的工作。我有具有解析方法的模型。我導入這個模型,爲myappdelegat中的惰性init創建屬性,進行合成並覆蓋senthesise mothod。然後我調用解析方法,然後我可以調用getter來獲取retreave數據。但我不能從我的視圖控制器創建沒有創建的getter。 – user2551359

0

您不需要在每次需要時創建對象的新實例, 您可以創建一個全局實例,您可以在應用程序的任何位置訪問

檢查這個代碼了:

[myClass sharedObject]; 

,並在每次調用我時間:

#import "myClass.h" 
@implementation myClass 

+(id)sharedObject{ 
    static myClass *myClassObject = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     myClassObject = [[self alloc] init]; 
     //build stuff 
     //build another stuff 
    }); 
    return myClassObject; 
} 
現在,當你需要你的高級應召

T,它會給你相同的實例一遍又一遍

1

你可以做一個方法:initWithData:(Data*) _data 像這樣創建您的視圖控制器屬性:

@property (strong, nonatomic) Data *data 

併爲您initWithData方法:

//synthesize your data first 
-(id)initWithData:(Data*)_data 
{ 
    self = [super init]; 
    if (self) 
    { 
     self.data = _data; 
    } 
    return self; 
} 

請記住在您的.h文件中包含initWithData函數的原型。您還可以將Data更改爲您要使用的任何數據類。 「

+0

這裏是對的答案--- http://www.leesilver.net/1/post/2011/08/passing-data-between-view-controllers-in-objective-c.html – user2551359

相關問題