2011-08-10 7 views
1

私はFMDBを使用してデータベースからデータを取得しようとしていますが、しばらくの間無駄にしていましたが、なぜこれがEXC_BAD_ACCESS例外をスローしているのかわかりません。パラメータはNSIntegerから渡されますが、それをログに記録することも、SELECT文で使用することもできません。私が持っているコードは:NSIntegerとintは例外を与えます

-(SQLiteResult*) getClient:(bool)forceRefresh id:(NSString*)id forYear:(NSInteger)year { 
    SQLiteResult *res; 
    if(!forceRefresh){ 
     NSMutableArray *hereditaments = [[NSMutableArray alloc] init]; 
     NSLog([NSString stringWithFormat:@"SELECT * FROM Clients WHERE ID = %@ AND Year = %@", id, [NSString stringWithFormat:@"%@", year]]); // exception 
     NSLog([NSString stringWithFormat:@"SELECT * FROM Clients WHERE ID = %@ AND Year = %@", id, year]]); // also exception 
     FMResultSet *rs = [db executeQuery:[NSString stringWithFormat: @"SELECT * FROM Clients WHERE ID = ? AND Year = %@", year], id]; // also exception 
     FMResultSet *rs = [db executeQuery:[NSString stringWithFormat: @"SELECT * FROM Clients WHERE ID = ? AND Year = ?", id, year]]; // also exception 

私はちょうどそれを文字列として渡す寸前です。 SQL文で今年の年を使うことができる安全な方法はありますか?

答えて

0

あなたの年間の変数がNSInteger型であるとして、あなたはあなたのNSStringの作成の%@

+0

パラメータをクエリとして渡すのではなく、%dと書式設定しました。ありがとう。 – Echilon

3

NSIntegerがオブジェクト型ではありません%dの形式を使用してはいけません。そのタイプはintです。したがって、フォーマット指定子として%@を使用することはできません。 %dを使用してください。

関連する問題