0

ここで説明されている関数を使用して、 sqliteデータベースにアクセスしています。関数に問題があります:

-(NSArray *)find:(NSString *)field from:(NSString *)table where:(NSString *)condition。

この関数は、条件がnilの場合、および条件がフォーマットやメソッドのない文字列である場合にうまく機能します。つまり、次のいずれかである場合にうまく機能します

NSArray * result = [[SQLiteManager singleton] find:@ "field1、field2" from:@ "tableName" where:nil];

NSArray * result = [[SQLiteManager singleton] find:@ "field1、field2" from:@ "tableName" where:@ "field2 = value"];

ただし、UITextFieldから読み取る必要がある条件があります。例えば

NSArray * result = [[SQLiteManager singleton] find:@ "field1、field2" from:@ "tableName" where:[NSString stringWithFormat:@ "field3 =%@"、[textFieldName text]]];

残念ながら、これを試してみるとコードが壊れて、アサーション失敗エラーが発生します。理由は?どんな助けでも大歓迎です。

4

1 に答える 1

1

少なくとも、の周りに一重引用符を付けたいと思うでしょう%@。このような:

NSArray *result = [[SQLiteManager singleton] find:@"field1,field2"
 from:@"tableName" where:[NSString stringWithFormat:@"field3='%@'",
 [textFieldName text]]];

しかし、それに加えて、文字列をエスケープすることもできます。

于 2012-08-22T19:10:27.063 に答える