将永久数据保存在一个类中并在另一个类中检索它的最佳方法是什么

时间:2012-10-07 05:16:50

标签: ios

我想保存这个词典数组,并能够检索另一个类并根据它做出决定。

这是数组:

NSArray* cellInfoArray = [[NSArray alloc] initWithObjects:[manufacturerTextField text],[lotNumberTextField text],[expirationDateTextField text],[techniqueTextField text],[cellNumberTextField text],[rhhrProfileTextField text],[donorNumberTextField text], nil];
    NSArray* keyNamingArray = [[NSArray alloc] initWithObjects:@"company",@"lot",@"expDate",@"tech",@"whichCell",@"rhTyping",@"donor", nil];

NSArray* resultsArray = [[NSArray alloc] initWithObjects:[capitalDResultLabel text],[capitalCResultLabel text],[capitalEResultLabel text],[cResultLabel text],[eResultLabel text],[fStarResultLabel text],[cwResultLabel text],[vResultLabel text],[capitalKResultLabel text],[kResultLabel text],[kpaResultLabel text],[kpbResultLabel text],[jsaResultLabel text],[jsbResultLabel text],[fyaResultLabel text],[fybResultLabel text],[jkaResultLabel text],[jkbResultLabel text],[xgaResultLabel text],[leaResultLabel text],[lebResultLabel text],[capitalSResultLabel text],[sResultLabel text],[mResultLabel text],[nResultLabel text],[p1ResultLabel text],[luaResultLabel text],[lubResultLabel text], nil];

NSArray* antigenNames = [[NSArray alloc] initWithObjects:@"D",@"C",@"E",@"c",@"e",@"f*",@"Cw",@"V",@"K",@"k",@"Kpa",@"Kpb",@"Jsa",@"Jsb",@"Fya",@"Fyb",@"Jka",@"Jkb",@"Xga",@"Lea",@"Leb",@"S",@"s",@"M",@"N",@"P1",@"Lua",@"Lub", nil];

_cellInfo = [[NSMutableDictionary alloc] initWithObjects:cellInfoArray forKeys:keyNamingArray];
_resultDictionary = [[NSMutableDictionary alloc] initWithObjects:resultsArray forKeys:antigenNames];

finalCellOne = [[NSMutableDictionary alloc] initWithObjectsAndKeys:_cellInfo,@"clerk",_resultDictionary,@"theResults", nil];

这可能是基本的东西,但我一直在尝试几件事(archiver,属性列表,nsuserdefaults),并且我一直“无效”。

用户应该能够修改数据;因此,如果我们使用文件路径,第二个类也应该知道。

我不一定需要你们的任何代码;如果我得到一些关于我的研究重点可以做到这一点的指导,我们将不胜感激。 谢谢你们

1 个答案:

答案 0 :(得分:0)

这听起来像是一个单例类对你有用的情况。您的单例将处理对应用程序范围的数据访问和序列化/反序列化。

@interface ApplicationData : NSObject

+ (id)sharedData;

//  your class properties that expose the data

@end

@implementation ApplicationData

+ (id)sharedData {
    static dispatch_once_t pred;
    static ApplicationData *cSharedInstance = nil;

    dispatch_once(&pred, ^{ cSharedInstance = [[self alloc] init]; });
    return cSharedInstance;
}

// you'll need to provide for serialization/deserialization as you are doing now.

@end

此后,您可以通过以下方式访问共享数据:[[ApplicationData sharedData] cellInfoArray]等。