如何从NSMutableArray中删除特定的NSString

时间:2018-04-13 06:35:16

标签: ios objective-c

帮我解决问题,我一直被困在这里。

我也看到过很多类似的问题,同样的问题。但他们都没有解决我的问题。这就是我需要在Stack上提出类似问题的原因。

我有NSMutableArray,即NSMutableArray *arrNames = [[NSMutableArray alloc] initWithObjects:@"ABC", @"DEF", @"GHI", nil];

现在我要从此数组中删除GHI。所以我尝试过这种方式,但事实并非如此  锻炼。请帮帮我。

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        NSMutableArray *arrDeletedGTINS = [[NSMutableArray alloc] init];
        arrDeletedGTINS = [userDefaults objectForKey:@"deletedArr"];


NSLog(@"%@", arrDeletedGTINS); will give this output ->

(         00000000000017     )

    if ([arrDeletedGTINS containsObject:@"00000000000017"]) {
        [arrDeletedGTINS removeObject:@"00000000000017"];
    }

    [userDefaults setObject:arrDeletedGTINS forKey:@"deletedArr"];
    [userDefaults synchronize];

如果我出错了那么请纠正我。我正在学习iOS。 请帮帮我。

2 个答案:

答案 0 :(得分:1)

这一行是你的问题:

arrDeletedGTINS = [userDefaults objectForKey:@"deletedArr"];

NSUserDefault将数组保存为NSArray,而不是NSMutableArray。
所以用以下代码替换上面的行:

arrDeletedGTINS = [[userDefaults objectForKey:@"deletedArr"] mutableCopy];

答案 1 :(得分:0)

试试这个。

您可以在 NSMutableArray

中使用 containsObject 方法
if ([arrNames containsObject:@"GHI"]) {
    [arrNames removeObject:@"GHI"];
}