NSRange在模拟器中返回nil

时间:2012-09-06 21:30:54

标签: nsstring nsmutablearray null nsrange

我正在制作搜索功能,它在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;

1 个答案:

答案 0 :(得分:2)

NSRange不能为零 - 它不是一个对象,甚至不是一个指针。

最有可能searchText是零。

如果它在模拟器或设备上有问题,你必须修理它,因为某天失败。