这是我用来保存NSMutableArray"名称"的代码。 (在用户按下保存按钮后),我认为它没有问题,但我不确定相应的代码是什么,然后在我重新打开我的应用程序时加载我的数组。任何帮助将不胜感激!
//char defined in external asm file
extern char patterns, patterns_end, patterns1, patterns1_end,.......;
extern char palette, palette1,.......;
extern char map, map_end, map1, map1_end,.......;
//now store all addresses inside arrays (is this wrong?)
char *PAT[] = {&patterns,&patterns_end,&patterns1,&patterns1_end,.......};
char *PAL[] = {&palette,&palette_end,&palette1,&palette1_end,.......};
char *MAP[] = {&map,&map_end,&map1,&map1_end,.......};
//now access addresses to use in a function
int main(){
while(1){
bgInitTileSet(0, PAT[v], PAL[v], 0, (PAT[v+1] - PAT[v]), 256*2, BG_256COLORS, 0xC000);
bgInitMapSet(0, MAP[v], (MAP[v+1] - MAP[v]),SC_32x32, 0x7000);
v++;
WaitForVBlank();
}
}
答案 0 :(得分:1)
NSKeyedUnarchiver
类来完成的。
让我们从代码示例开始:
@try {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];
NSString *defaultPath = [docDir stringByAppendingPathComponent:@"temporaryArray"];.
self.yourArray = [NSKeyedUnarchiver unarchiveObjectWithFile: defaultPath];
if (!self.yourArray) {
NSLog(@"Error!");
} else {
// Success!
}
} @catch (NSException *exception) {
NSLog(@"Some error happened: %@", exception);
}
NSKeyedUnarchiver
类获取包含NSKeyedArchiver
归档内容的文件的路径。然后它将读取此文件并返回“root”对象 - 您告诉NSKeyedArchiver
存档的对象。就这么简单。 (当然,您应该包括错误处理,我在上面给出了一个简短的例子。)
如果您想要其他资源,可以阅读着名的Mattt Thompson撰写的this great introductory article,它可以很好地解释课程背后的概念。
希望这有帮助。
答案 1 :(得分:1)
如果数组的内容都是属性列表对象(NSString,NSData,NSArray或NSDictionary对象),那么您可以使用NSKeyedArchiever / NSKeyedUnarchiever以外的方式进行保存和读取:
- (IBAction)save:(id)sender
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];
NSString *fullFileName = [docDir stringByAppendingPathComponent:@"temporaryArray"];
[names writeToFile:fullFileName atomically:YES];
}
- (NSMutableArray*)readNames
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];
NSString *fullFileName = [docDir stringByAppendingPathComponent:@"temporaryArray"];
return [NSMutableArray arrayWithContentsOfFile:fullFileName];
}
答案 2 :(得分:0)
- (IBAction)save:(id)sender
{
// check for previous data persistancy.
NSArray *arrData = [[NSUserDefaults standardDefaults]objectforkey:@"Paths"];
if(arrData == nil)
{
// Maintain your old data and update it in new one to store the same.
NSMutableArray *arrTempData = [NSMutableArray arrayWithArray:arrData];
//Add Some data to old array based on your bussiness logic.
[arrTempData add object:@"some data"];
// Update in User Defaults
[[NSUserDefaults standardDefaults]setobject:[NSArray arrayWithArray:arrTempData] forkey:@"Paths"];
}
}
在代码中的某处,将代码放在下面以获取数据,
NSArray *arrSavedData = [[NSUserDefaults standardDefaults] objectforkey:@"Paths"];