试图在NSMutableArray中获取对象的索引.它返回一些垃圾值,而不是为什么它不返回特定项的索引.以下是我试过的代码.
NSString *type = [dictRow valueForKey:@"type"];
if([arrSeatSel indexOfObject:type])
{
NSUInteger ind = [arrSeatSel indexOfObject:type];
[arrTotRows addObject:[arrSeatSel objectAtIndex:ind]];
}
Run Code Online (Sandbox Code Playgroud)
type包含值"Gold".并且arrSeatSel包含
(
"Gold:0",
"Silver:0",
"Bronze:1"
Run Code Online (Sandbox Code Playgroud)
怎么检查.请指导.
你得到的价值是NSNotFound.你得到NSNotFound因为@"Gold"不等于@"Gold:0".
你应该尝试以下方法
NSUInteger index = [arrSeatSel indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop){
return [obj hasPrefix:type];
}];
if (index != NSNotFound) {
[arrTotRows addObject:[arrSeatSel objectAtIndex:index]];
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
-indexOfObjectPassingTest:是一个运行以下循环.注意:/* TEST */某些代码在找到正确的索引时返回true.
NSUInteger index = NSNotFound;
for (NSUInteger i = 0; i < [array count]; ++i) {
if (/* TEST */) {
index = i;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的第一个样本中,/* TEST */是[obj hasPrefix:type].最后的for循环看起来像.
NSUInteger index = NSNotFound;
for (NSUInteger i = 0; i < [arrSeatSel count]; ++i) {
if ([arrSeatSel[i] hasPrefix:type]) {
index = i;
break;
}
}
if (index != NSNotFound) {
[arrTotRows addObject:[arrSeatSel objectAtIndex:index]];
}
Run Code Online (Sandbox Code Playgroud)
我-indexOfObjectPassingTest:更喜欢.
该[obj hasPrefix:type]部分只是比较字符串的另一种方式.阅读-hasPrefix:文档了解更多详情.
希望能回答你的所有问题.