-1

如下所示的代码,它不会给我我的可变数组。我的可变数组中有 3 个注释,但是一旦我关闭我的应用程序并再次打开它,它就会显示 0 个对象。我不知道为什么我在取回数组时会得到 O 个对象!任何想法?

-(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];
}
4

1 回答 1

2

您不能将 MKAnnotation 保存到 NSUserDefaults 中。NSUserDefaults 是一个属性列表;只有正确列出的对象才能存储在那里。您需要将 MKAnnotation 归档到 NSData 以便将其保存在 NSUserDefaults 中。阅读文档,还可以查看例如需要存档 CLLocation 数据

于 2012-10-04T04:04:51.473 回答