2

これは私のコードです

 BackendlessDataQuery *query = [BackendlessDataQuery query];
query.whereClause = [NSString stringWithFormat:@"UniversityName LIKE \'%%%@%%\' ", partialName];
[[backendless.persistenceService of:[University class]] find:query response:^(BackendlessCollection *coll) {

    });
} error:nil];

3行目が実行されるとエラーが発生します

* Terminating app due to uncaught exception 'NSRangeException', reason: '* -[__NSArray0 objectAtIndex:]: index 3 beyond bounds for empty NSArray' *** First throw call stack: (0x181245900 0x1808b3f80 0x1811c1478 0x10034d250 0x100318f24 0x1000ea9b0 0x101859bf0 0x101859bb0 0x10185f658 0x1811fcbb0 0x1811faa18 0x181129680 0x182638088 0x185fa0d90 0x10017d650 0x180cca8b8) libc++abi.dylib: タイプ NSException のキャッチされない例外で終了します

理由は何ですか?

4

2 に答える 2

0

例外はof:find:response、persistenceService のメソッド内で、コードが空の配列のインデックス 3 を取得しようとするためです。あなたのコードが与えられた最も可能性の高い理由は、そのコードに予期しないパラメーターのバグがあることです。

編集:コメントに基づいて、バックエンドレスが設定される前にこのコードを実行している可能性があります。 application: didFinishLaunchingWithOptions:早すぎるかもしれません。

元の答え:

  1. 行を削除しquery.whereClause = [NSString stringWithFormat:@"UniversityName LIKE \'%%%@%%\' ", partialName];ます。それはうまくいきますか?もしそうなら、あなたの where 節はおそらく期待されていません (UniversityName は正しいフィールド名ですか? バックエンドレスは Like をサポートしていますか? もしそうなら、それは正しい構文ですか?)

  2. whereClause なしでまだ機能しない場合 -- バックエンドレスはあなたのUniversityクラスを認識していますか?

これで解決しない場合は、バックエンドレスに助けを求める方がよいかもしれません。

于 2016-03-05T15:30:36.427 に答える