从 NSUserDefaults 获取 NSMutableArray 并添加元素

Getting NSMutableArray from NSUserDefaults and adding elements

我得到了允许用户将 post 标记为收藏的按钮。
这是我的代码:

+(NSMutableArray*) getFavoritePostsArray {
    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
    NSMutableArray *tempArray = [userDefault mutableArrayValueForKey:@"favoritePostArray"];

    if ([tempArray count] == 0) {
        return [[NSMutableArray alloc] init];
    }
    else {
        return tempArray;
    }
}
+(BOOL)addFavoritePost:(CostumSDPost *)post {
    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

    NSMutableArray *tempArray = [GlobalFunctionAndVariable getFavoritePostsArray];
    NSDictionary *tempPost = @{
                               @"title" : post.title,
                               @"ID": post.ID,
                               @"imageURL": post.imageURl,
                               @"viewsNumber" : post.viewsNumber,
                               @"content" : post.content,
                               @"date": post.date,
                               @"authorName": post.authorName,
                               @"categoryList": post.categoryList,
                               @"commentsArra": post.commentsArray,
                               @"commentsStatus": post.commentsStatus,
                               @"commentsNumber":[[NSString alloc] initWithFormat:@"%lu", post.commentsNumber],
                               };


    [tempArray addObject:tempPost];


    //[userDefault removeObjectForKey:@"favoritePostArray"];
    //[userDefault synchronize];
    [userDefault setObject:tempArray forKey:@"favoritePostArray"];
    //[userDefault synchronize];
    return YES;
}

此代码仅适用于第一次,当 favoritePost 数组为空且用户将第一个 post 添加到数组时。
否则,如果我再次按下添加收藏夹按钮以将其他人 Post 添加到收藏夹Post 阵列,我的应用程序将被阻止并且不会显示任何错误。 我使用了调试点,我认为我的应用程序在此行被阻止

[userDefault setObject:tempArray forKey:@"favoritePostArray"];

所以我在这里错过了什么?

mutableArrayValueForKey 是 KVC 方法,不是 NSUserDefaults 上的方法。试试这个:

NSMutableArray *tempArray = [[userDefault arrayForKey:@"favoritePostArray"] mutableCopy];