我试图在我的NSUserDefaults中存储几个字符串...无法弄清楚我做错了什么......
-(IBAction)addToFavorite:(id)sender {
NSMutableArray* favoritedAlready = [[[NSUserDefaults standardUserDefaults] objectForKey:@"favorites"] mutableCopy];
NSLog(@"%@",favoritedAlready);
if (![favoritedAlready containsObject:indexPathRowString]) {
[favoritedAlready addObject:indexPathRowString];
[[NSUserDefaults standardUserDefaults] setObject:favoritedAlready forKey:@"favorites"];
[[NSUserDefaults standardUserDefaults] synchronize];
favoritMarkerad.image = [UIImage imageNamed:@"StarFilled.png"];}
else {
[favoritedAlready removeObject:indexPathRowString];
[[NSUserDefaults standardUserDefaults] setObject:favoritedAlready forKey:@"favorites"];
[[NSUserDefaults standardUserDefaults] synchronize];
favoritMarkerad.image = [UIImage imageNamed:@"StarEmpty.png"];
}
当我尝试在另一个viewcontroller中加载我的数组时没有任何反应..
(.h)
NSMutableArray *favorites_;
@property (nonatomic, retain) NSMutableArray *favorites_;
(.m)
@synthesize favorites_;
-(void)makeData{
NSMutableArray* favoritedAlready = [[NSUserDefaults standardUserDefaults] objectForKey:@"favorites"];
[[NSUserDefaults standardUserDefaults] synchronize];
favorites_ = favoritedAlready;}
“的NSLog(@” %@ “favoritedAlready);”给出了“2012-01-25 14:53:26.360 myApp [2752:1be03](null)” 任何想法?
答案 0 :(得分:2)
根据您的评论,问题在于NSUserDefaults
中任何位置都没有名为“收藏夹”的数组。如果它不存在,你可能想要创建一个。所以:
-(IBAction)addToFavorite:(id)sender {
// get a mutable copy of the stored array, if there is one
NSMutableArray* favoritedAlready = [[[NSUserDefaults standardUserDefaults]
objectForKey:@"favorites"] mutableCopy];
// if there wasn't a stored array then go ahead and create one to store
if(!favoritedAlready)
favoritedAlready = [NSMutableArray array];
/* ... rest of stuff here ... */
if (![favoritedAlready ...
答案 1 :(得分:1)
NSMutableArray在第一点是(null),所以你可以这样做:
if (favoritedAlready == nil) {
favoritedAlready = [[NSMutableArray alloc] init];
}
在mutableCopy
方法之后。
因此,您将向NSMutableArray
添加值,而不是将其添加到(null)对象
就像汤米所说的那样