我正在制作搜索功能,它在iphone和iphone模拟器上工作正常但不适用于ipad模拟器。当我输入我的值进行搜索时,它给出的错误主要是说NSRange是nil:
'NSInvalidArgumentException',原因:' * - [NSCFString rangeOfString:options:range:locale:]:nil argument'
继承我所拥有的。
for (int i = 0, c = names.count; i < c; ++i) {
sFirst = [firstArray objectAtIndex:i];
sSecond = [secondArray objectAtIndex:i];
NSRange result = [sFirst rangeOfString:searchText options:NSCaseInsensitiveSearch];
NSRange r = [sSecond rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (result.location != NSNotFound) {
[searchedFirst addObject:sFirst];
[searchedSecond addObject:sSecond];
}
if (r.location != NSNotFound) {
[searchedFirst addObject:sFirst];
[searchedSecond addObject:sSecond];
}
}
任何人都可以向我解释为什么会发生这种情况,或者我能解决这个问题吗?我可以不担心,因为它在实际设备上工作正常吗?
解决 我想因为我在调用searchText(或searchBar.text)时没有将值更改为字符串,所以它返回nil。所以我只是在头文件中声明了一个字符串。
stringValue = searchBar.text;
答案 0 :(得分:2)
NSRange不能为零 - 它不是一个对象,甚至不是一个指针。
最有可能searchText
是零。
如果它在模拟器或设备上有问题,你必须修理它,因为将某天失败。