gpt4 book ai didi

ios - 保存多个注释-NSUserDefaults

转载 作者:行者123 更新时间:2023-11-29 04:23:03 25 4
gpt4 key购买 nike

我遇到了如下代码。在下面的代码中,我只能保存一个注释,但是我有一组注释,我无法使用单个 NSUserDefaults 保存它们

  To save:

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setDouble:location.latitude forKey:@"savedCoordinate-latitude"];
[ud setDouble:location.longitude forKey:@"savedCoordinate-longitude"];
[ud setBool:YES forKey:@"savedCoordinate-exists"];
[ud synchronize];

编辑:

 -(void)viewDidLoad
NSUserDefaults *ud=[NSUserDefaults standardUserDefaults];
if([ud boolForKey:@"save-exist"])
{ NSMutableArray *udAnnotations=[[NSMutableArray alloc]initWithArray:
[ud objectForKey:@"annotationsArray"]];
NSLog(@"%d",[udAnnotations count]);
}
else{
[self addAnno];
}

-(void)addAnno
{

[mapView addAnnotations:annotationArray];
NSUserDefaults *ud=[NSUserDefaults standardUserDefaults];
[ud setObject:annotationArray forKey:@"annotationsArray"];
[ud setBool:YES forKey:@"save-exist"];
[ud synchronize];

}

最佳答案

由于您已经有一个数组,只需使用 setObject:forKey:arrayForKey:

由于原始数组中的对象不是可以直接保存的类型,因此将其数据存储在字典中:

NSMutableArray *saveData = [[NSMutableArray alloc] initWithCapacity:originalData.count];
for(id location in originalData) {
[saveData addObject:@{@"lat":[location latitude], @"lon":[location longitude]}];
}
[[NSUserDefaults standardUserDefaults] setObject:saveData forKey:@"annotationsArray"];

并在检索时进行转换:

NSMutableArray *restoredData = [[NSMutableArray alloc] init];
for(NSDictionary *data in [[NSUserDefaults standardUserDefaults] arrayForKey:@"annotationsArray"]) {
[restoredData addObject:[[Location alloc] initWithLat:data[@"lat"] andLon:data[@"lon"]]];
}
// if restoredData.count is 0, there were no stored objects.

一些注意事项:

  • 如果您不使用 ARC,请记住释放已分配的对象。
  • 这使用新的 Objective C 对象字面量语法和字典访问语法。如果您不使用 xcode 4.5,则需要以传统方式构造和访问它们,dictionaryWithObjectsAndKeys:objectForKey:

关于ios - 保存多个注释-NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12719528/

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