Nee*_*esh 42 iphone objective-c nsmutablearray ios
我不知道该如何解决这个问题.我有一个NSMutableArray(addList),它包含要添加到我的数据源NSMutableArray的所有项目.
我现在想检查从addList数组添加的对象是否已经存在于数据源数组中.如果不存在则添加项目,如果存在则忽略.
这两个对象都有一个名为iName的字符串变量,我想比较它.
这是我的代码片段
-(void)doneClicked{
for (Item *item in addList){
/*
Here i want to loop through the datasource array
*/
for(Item *existingItem in appDelegate.list){
if([existingItem.iName isEqualToString:item.iName]){
// Do not add
}
else{
[appDelegate insertItem:item];
}
}
}
Run Code Online (Sandbox Code Playgroud)
但即使它存在,我也会发现要添加的项目.
我究竟做错了什么 ?
小智 72
在NSArray中有一个非常有用的方法,即 containsObject.
NSArray *array;
array = [NSArray arrayWithObjects: @"Nicola", @"Margherita", @"Luciano", @"Silvia", nil];
if ([array containsObject: @"Nicola"]) // YES
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
Nee*_*esh 39
我找到了一个解决方案,可能不是最有效的解决方案,但至少可行
NSMutableArray *add=[[NSMutableArray alloc]init];
for (Item *item in addList){
if ([appDelegate.list containsObject:item])
{}
else
[add addObject:item];
}
Run Code Online (Sandbox Code Playgroud)
然后我迭代添加数组并插入项目.
Emp*_*ack 22
使用NSPredicate.
NSArray *list = [[appDelegate.list copy] autorelease];
for (Item *item in addList) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"iName MATCHES %@", item.iName];
NSArray *filteredArray = [list filteredArrayUsingPredicate:predicate];
if ([filteredArray count] > 0) [appDelegate insertItem:item];
}
Run Code Online (Sandbox Code Playgroud)
你试过indexOfObject:吗?
-(void)doneClicked{
for (Item *item in addList){
if([appDelegate.list indexOfObject:item] == NSNotFound){
[appDelegate insertItem:item];
}
}
Run Code Online (Sandbox Code Playgroud)
更新:你有一个逻辑错误,而不是代码中的错误.假设第一个数组是['a','b','c'],第二个数组是['a','x','y','z'].当您通过第二个数组使用'a'进行迭代时,它不会在第一次迭代中将'a'添加到第二个数组(比较'a'和'a'),但会在第二个数组中添加(比较'a'和'x' ").这就是为什么你应该isEqual:在'Item'对象中实现方法(见下文)并使用上面的代码.
- (BOOL)isEqual:(id)anObject {
if ([anObject isKindOfClass:[Item class]])
return ([self.iName isEqualToString:((Item *)anObject).iName]);
else
return NO;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76451 次 |
| 最近记录: |