0

我创建了一个带有多个视图的小应用程序。为此,我使用情节提要并为每个视图使用一个视图控制器。现在,我必须存储数据,用户可以在视图中输入这些数据。我想为此使用字典。我现在,如何创建字典:

NSMutableDictionary *globalData = [[NSMutableDictionary alloc] init];
//add keyed data
[globalData setObject:@"Object One" forKey:@"1"];
[globalData setObject:@"Object Two" forKey:@"2"];

我现在正在寻找添加和实例化这个字典的正确位置,它可以在所有视图中用作模型。

4

2 回答 2

1

您可以使用单例模型对象来保存全局数据。如果您在几乎所有视图控制器中都使用它,请在 *.pch 文件中声明。如果您使用字典,则定义一些常量以便于使用。

GlobalDataModel *model = [GlobalDataModel sharedDataModel];
//Pust some value
model.infoDictionary[@"StoredValue"] = @"SomeValue";
//read from some where else
NSString *value = model.infoDictionary[@"StoredValue"];

.h 文件

@interface GlobalDataModel : NSObject

@property (nonatomic, strong) NSMutableDictionary *infoDictionary;

+ (id)sharedDataModel;

@end

.m 文件

@implementation GlobalDataModel

static GlobalDataModel *sharedInstance = nil;

- (id)init{
    self = [super init];
    if (self) {
        self.infoDictionary = [NSMutableDictionary dictionary];
    }

    return self;
}

+ (id )sharedDataModel {
    if (nil != sharedInstance) {
        return sharedInstance;
    }
    static dispatch_once_t pred;        // Lock
    dispatch_once(&pred, ^{             // This code is called at most once per app
        sharedInstance = [[self alloc] init];
    });

    return sharedInstance;
}
于 2013-06-15T11:59:12.507 回答
0
  1. 将 NSMutableDictionary 声明为 .h 文件中与模型有关的所有 ViewController 的属性
  2. 在您的 .m 文件中,使用惰性实例化实现 NSMutableDictionary 的 getter。

..

-(NSMutbaleDictionary *) globalData{

    if (_globalData == nil){
        _globalData = [[NSMutableDictionary alloc]init]; 

    }

    return _globalData;   
}
  1. 将字典转移到prepareForSegue中其他视图的其他viewControllers:
于 2013-06-15T11:10:41.590 回答