n.e*_*ind 11 iphone cocoa-touch objective-c nsmutablearray
我有一个NSMutableArray可以容纳几个对象.我想检查是否存在对象,如果存在,则更改它.我想知道检查它.我认为这会奏效:
if ([[[self.myLibrary objectAtIndex:1] subObject] objectAtIndex:1]) // do something
Run Code Online (Sandbox Code Playgroud)
但是,如果索引1处没有任何子对象,则会崩溃.所以我猜问题是如果此索引中没有任何内容,则上述内容不会返回nil.
还有另一种简单的检查方法,还是我必须通过数组等计算?我知道stackoverflow上还有其他帖子,但我还没有找到一个简单的答案.
欢迎任何解释/建议.谢谢!
小智 46
不检查只是使用:
[myArray indexOfObject:myObject];
Run Code Online (Sandbox Code Playgroud)
要么
[myArray containsObject:myObject];
Run Code Online (Sandbox Code Playgroud)
这些方法使用检查每个对象isEqual
.
例如:
NSUInteger objIdx = [myArray indexOfObject: myObject];
if(objIdx != NSNotFound) {
id myObj = [myArray objectAtIndex: objIdx];
// Do some alter stuff here
}
Run Code Online (Sandbox Code Playgroud)
smo*_*gan 13
如果这是一个你经常使用的模式,你可以在NSArray中添加一个类别,类似于safeObjectAtIndex:
,它接受一个索引,在内部进行边界检查:
-(id)safeObjectAtIndex:(NSUInteger)index {
if (index >= [self count])
return nil;
return [self objectAtIndex:index];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26530 次 |
最近记录: |