NSMutableArray NSData转换使用NSUserDefaults

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

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

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