1

何らかの理由で、アプリケーションが「NSAssert1(0, @"Error while looping search view. '%s'", sqlite3_errmsg(database));」で失敗します。データベースを開くときに同じステートメントを使用したため、SQLステートメントは問題ありません。有用なエラーは発生しません:-(

私はこれにまったく慣れていませんが、まったく見知らぬ人ではありません。何が間違っていますか?

これがエラーではないことを確認するために、「strSearch」を取り出したことに注意してください。

- (void)searchComponents:(NSString *)strSearch {

    NSString *qry;

    qry = [NSString stringWithFormat:@"SELECT ID, ON_SAP, SAP_PART, SAP_DESC, MOQ FROM HONEYWELL WHERE SAP_PART LIKE '%ZX%' ORDER BY SAP_PART", strSearch];
    NSLog(@"query : %@", qry);

    if(searchStmt == nil) {
        if(sqlite3_prepare_v2(database, [qry UTF8String] , -1, &searchStmt, NULL) != SQLITE_OK)
            NSAssert1(0, @"Error while creating search view statement. '%s'", sqlite3_errmsg(database));
    }

    // Loop through the results

    if(sqlite3_step(searchStmt) == SQLITE_ROW) {
        // Read the data from the result row
        NSLog(@"New row selected");
    }
    else {
        NSAssert1(0, @"Error while looping search view. '%s'", sqlite3_errmsg(database));
    }

    // Release the compiled statement from memory
    sqlite3_finalize(searchStmt);

    // Set isDetailViewHydrated as YES, so we do not get it again from the database.
    isDetailViewHydrated = YES;
}

メソッドは、MasterViewController から呼び出される独自のクラス (Coffee という名前) にあります。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    NSLog(@"Text changed %@",searchText); 
    Coffee *coffeObj = [[Coffee alloc] init];
    [coffeObj searchComponents:@"%ZX%"];
}

アイデアは、検索フィールドから検索するときにselectステートメントを変更することです.これを行う良い例を知っている人はいますか?

4

1 に答える 1

0

問題は解決しました。リセットがありませんでした

sqlite3_reset(searchStmt); 
于 2012-06-05T10:47:32.577 に答える