1

大家好,我真的被困在我的 iOS 应用程序中传递的数据中。

首先,我有一个带有 TabBarController 的类和另外两个 ViewController。这是一个包含每日和每周日历视图的容器视图。

而且我想将下载的数据存储在带有日期的 NSDictionary 中,因此日历不必随时重新加载数据(仅当用户强制刷新时)。

那么,我应该将这些数据存储在 Container 视图中的“extern NSDictionary”中吗?或者我应该创建一个 SingletonClass 并将 Dictionary 存储在那里?但是 SingletonClass 会在容器视图释放后释放吗?

或者我应该将 NSDictionary 存储在容器视图中,然后通过协议使用方法来访问 Dic?但是怎么做?

我检查了很多教程和示例,但我仍然不知道如何正确地做到这一点。谢谢

4

1 回答 1

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];
}

然后只需将此单例文件导入到您想要访问它的任何位置,您就可以使用它的值初始化新字典并创建可变副本,然后在您想要的任何位置覆盖保存的值。哦,你还应该导入 Matt Gallagher 的很棒的 SynthesizeSingleton 类。http://www.cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html

于 2013-04-29T22:52:29.573 回答