我有2个阵列。需要从其中一个数组中删除字符串(如果在两个数组中都找到它)

时间:2014-02-25 01:26:16

标签: ios objective-c arrays nsmutablearray nsarray

我有2个NSMutableArray对象。一个称为“friendsNotInDatabase”,另一个称为“friendsInDatabase”。

它们都包含NSStrings,其名称类似John,Steve,Mary。

我需要这样做,以便如果在“friendsInDatabase”数组中找到“friendsNotInDatabase”数组中的一个名称,那么它将从“friendsNotInDatabase”中删除。

我一直试图想出一个合乎逻辑的方法来做几个小时,我完全陷入困境。

感谢您的帮助。

编辑 - 到目前为止,这是我的代码:

int i;

for(i = 0; i < self.friendsInDatabase.count; i++) {

NSString *string;

string = [self.friendsInDatabase objectAtIndex:i];

}

我需要一种方法来获取“string”的值并检查它是否存储在另一个名为“friendsNotInDatabase”的数组中。

3 个答案:

答案 0 :(得分:2)

我同意徐寅的观点。你的问题究竟是什么,你的问题有点模糊。

NSString *searchString = @"Jane";

if([friendsInDatabase containsObject:searchString])
    [friendsNotInDatabase removeObject:searchString];

答案 1 :(得分:1)

如果订单不重要,您可以将NSMutableOrderedSet更改为NSMutableSet

NSMutableArray *friendsNotInDatabase = //...
NSMutableArray *friendsInDatabase = //...

NSSet *indb = [NSSet setWithArray:friendsInDatabase];
NSMutableOrderedSet *notindb = [NSMutableOrderedSet orderedSetWithArray:friendsNotInDatabase];
[notindb minusSet:indb];
friendsNotInDatabase = [[notindb array] mutableCopy];
顺便说一下,根据我的理解,他们应该NSSet开始,而不是NSArray

答案 2 :(得分:1)

一种简单的方法是反过来解决它。制作第三个(空)可变数组。遍历friendsNotInDatabase数组并将每个名称添加到第三个数组,但前提是friendsInDatabase数组中!现在用第三个数组替换friendsNotInDatabase

NSMutableArray* third = [NSMutableArray new];
for (NSString* aName in friendsNotInDatabase)
    if (NSNotFound == [friendsInDatabase indexOfObject: aName]
        [third addObject: aName];
friendsNotInDatase = third;