1

検索機能を作成していますが、iPhone と iPhone シミュレーターでは正常に動作しますが、iPad シミュレーターでは動作しません。検索する値を入力すると、基本的に NSRange が nil であるというエラーが表示されます。

'NSInvalidArgumentException', reason: ' * -[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;
4

1 に答える 1

2

NSRange を nil にすることはできません。これはオブジェクトではなく、ポインターでもありません。

それはおそらくsearchTextゼロです。

また、シミュレーターまたはデバイスのいずれかにバグがある場合は、いつか失敗するため、修正する必要があります

于 2012-09-06T21:36:55.697 に答える