2013-04-26 22 views
1

Hy全部, 我真的被困在我的iOS應用程序的數據傳遞。iOS傳遞數據,單身,外部或通過協議?

首先我用TabBarController和另一個兩個ViewController裏面有一個類。 這是一個包含每日和每週日曆視圖的容器視圖。

我想將下載的數據存儲在帶有日期的NSDictionary中,因此日曆不必隨時重新加載數據(僅當用戶強制刷新時)。

因此,我應該將這些數據存儲在Container視圖中的「extern NSDictionary」中嗎? 或者我應該創建一個SingletonClass並將字典存儲在那裏? 但是容器視圖發佈後SingletonClass會被釋放嗎?

或者我應該將NSDictionary存儲在容器視圖中,然後通過協議使用方法來訪問Dic?但是如何?

我查了很多教程和例子,但我仍然不知道如何正確地做到這一點。 謝謝

+0

因此,您有一個標籤欄控制器,其中每個標籤欄控件都帶有一個視圖控制器。一個VC每天顯示,另一個顯示每週日曆,問題是如何在這兩個控制器之間共享數據? – user523234 2013-04-26 11:11:18

+0

是的,我想要一個類(或者我擴展了TabBarContrCalls),可以爲數據返回一些數據(如果它尚未下載)。 我是否需要使用單身?但是,在所有包含的課程發佈之後他們會發布嗎 – Laszlo 2013-04-27 18:11:48

回答

2

你可以將它存儲在tabBarController中並在tabBar viewController實例內部訪問它,但我認爲你可能最好將它存儲在NSUserDefaults中。這樣你可以輕鬆地從它中獲取它無需抓取TabBar實例即可在應用程序中的任何位置。

我個人建議創建一個實現你像NSUserDefaults的這樣(雖然你可以只寫和直接讀它,如果你想)一個Singleton類:

//DefaultsSingleton.h 
@interface DefaultsSingleton : NSObject 
{ 
} 

+(DefaultsSingleton*) sharedDefaultsSingleton; 
@property(atomic,assign)NSDictionary *yourDictionary; 

//DefaultsSingleton.m 
@implementation DefaultsSingleton 

SYNTHESIZE_SINGLETON_FOR_CLASS(DefaultsSingleton) 

-(NSDictionary *) yourDictionary 
{ 
    return[ [NSUserDefaults standardUserDefaults] dictionaryForKey:@"your_dictionary"]; 
} 

-(void) setYourDictionary:(NSDictionary *)yourDictionary 
{ 
    [[NSUserDefaults standardUserDefaults] setValuesForKeysWithDictionary:yourDictionary]; 
} 

然後,只需將這個單例文件導入到您要訪問的任何位置,然後您可以使用它的值初始化新詞典並創建可變副本,然後無論您希望如何覆蓋保存的值。哦,你還應該導入馬特加拉格爾的真棒SynthesizeSingleton類。 http://www.cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html

+0

Hy there, 我已經使用NSUserDefaults的單例類來存儲用戶名,電子郵件地址和以前的數據,如上次使用的ViewController,用戶類型和類似的東西。 但存儲我想做一個動態和有組織的字典什麼是充滿事件,(天是鑰匙,然後對象是數組,並在數據更多的字典裏面)。 那麼,如果我將這個Dics及其方法存儲在TabBarControllerView中,然後使用委託方法訪問它,如果處理它是最好的方法呢? 順便說一句,感謝您的回覆 – Laszlo 2013-05-07 09:12:37

+0

是啊,這聽起來像它會工作,只要你願意重新加載你的字典,每次應用程序重新啓動。這是你想要做什麼? – 2013-05-07 21:17:10