NSUserDefaults不会存储我的NSStrings

时间:2012-01-25 13:46:37

标签: iphone ios nsstring nsmutablearray nsuserdefaults

我试图在我的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)” 任何想法?

2 个答案:

答案 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)对象


就像汤米所说的那样