无法从可变数组中删除项目

时间:2010-08-21 11:17:24

标签: iphone nsmutablearray

在我之前的问题中,我得到了一些代码,以便弥补这个陈述。

favoriteArray是一个可变阵列......

if (![self.favoritesArray containsObject:@"added"])
    {
        [self.favoritesArray addObject:@"added"];
    }

else
{
    [self.favoritesArray removeObject:@"added"];
}
//NSUInteger newRow = [self.favoritesArray count];

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:self.favoritesArray forKey:@"MyFavorites"]; 

然而我无法删除@"added" ... 当应用程序加载它时,即使在清理代码之后,它也会自动加载收藏夹中添加的文本。 当我按下按钮时它不会将其删除。 所以我猜是有什么不对的

这是我加载它的地方......

   NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
   NSMutableArray *didContain = [[NSMutableArray alloc] init];
   didContain = [[userDefaults objectForKey:@"MyFavorites"] mutableCopy];

   if ([didContain count] == 0) {
       NSLog (@"zero");

            //
            // no favorites have ever been saved
            //


    } else {

        // load the favorites into some array you synthesized just like before
        self.tableFavoritesData = [[NSMutableArray alloc] init];
        self.tableFavoritesData = [[userDefaults objectForKey:@"MyFavorites"] mutableCopy];
    }

2 个答案:

答案 0 :(得分:3)

你的代码没有多大意义。

从默认值加载数组:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
self.tableFavoritesData = [[userDefaults arrayForKey:@"MyFavorites"] mutableCopy];

是否有所作为。如果没有将空数组设置为默认值,则可以检查nil:

if (!self.tableFavouritesData)
    self.tableFavoritesData = [[NSMutableArray alloc] init];

或者你将无法将任何放入其中,因为它仍然是零。 (或者使用registerDefaults:注册一个默认值。这是首选的方法,你必须在实际读取默认值之前,即直接在启动时这样做。

答案 1 :(得分:0)

尝试在创建数组后添加@"added",看看是否删除了打印数组。也许你没有正确地序列化它或以正确的方式添加值。