我有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”的数组中。
答案 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;