gpt4 book ai didi

iphone - 保存 NSMutable 数组数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:54:30 25 4
gpt4 key购买 nike

我有一个使用 NSMutableArray 填充的 UITableView。我正在使用 xcode 4.2

NSMutable 数组中的数据会保留以防我切换应用程序,但在这两种情况下它会被删除:1-用户切换 View 并返回。

2-应用程序完全关闭(即用户双击主按钮并将其从正在运行的应用程序列表中删除)

这是我使用的代码

-(NSString *)dataFilePath{

NSString *dataFilePath;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
dataFilePath = [documentDirectory stringByAppendingPathComponent:@"Test App-Info.plist"];
return dataFilePath;

}

-(void)saveData{
[NSKeyedArchiver archiveRootObject:[data copy] toFile:[self dataFilePath]];
}

- (void)loadData
{
data = [NSKeyedUnarchiver unarchiveObjectWithFile:self.dataFilePath];
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
...

//saving the history

NSArray *archivedArray =[NSKeyedUnarchiver unarchiveObjectWithFile:[self dataFilePath]];
if (archivedArray == nil) {
data = [[NSMutableArray alloc] init];
}
else {
[self loadData];
[mainTableView reloadData];
}
}

如果我遗漏了什么,请告诉我

谢谢

编辑:

保存数据功能加载在两个位置:1- 我正在开发的应用程序扫描二维码,因此在以下函数中调用保存数据:

- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
....
id<NSFastEnumeration> results =
[info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results){
// EXAMPLE: just grab the first barcode
break;
}

if(!symbol)
return;

// EXAMPLE: do something useful with the barcode data
theBarcodeString = symbol.data;

//adding the string to the list

[data addObject:theBarcodeString];
[self saveData];
[mainTableView reloadData];
[self endText];
stringLabel.text=theBarcodeString;

...
}

编辑数据时也会调用:

    -(IBAction)editTable{
UIBarButtonItem *leftItem;
[mainTableView setEditing:!mainTableView.editing animated:YES];
if (mainTableView.editing) {
leftItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(editTable)];
}
else {

leftItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editTable)];

}

[self saveData];
[mainTableView reloadData];

}

最佳答案

您需要查看以下调用:

applicationDidEnterBackground
applicationWillEnterForeground
applicationDidBecomeActive
applicationWillTerminate

都是UIApplication的方法。您的需求将决定上述哪一项存储和恢复您的数据,具体取决于应该发生的时间。

关于iphone - 保存 NSMutable 数组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8327380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com