2
私はUILabelとUITableViewのビューを持っています。私は、データベースから文字列を取得するには、このコードを使用しています:UILabelのSQLiteから無効なNSStringを取得するのはなぜですか?
-(void)getOneQuestion:(int)flashcardId categoryID:(int)categoryId {
flashCardText=[[NSString alloc] init];
flashCardAnswer=[[NSString alloc] init];
NSString *martialStr=[NSString stringWithFormat:@"%d", flashcardId];
NSString *queryStr=[[NSString alloc] initWithString:@"select flashCardText,flashCardAnswer,flashCardTotalOption from flashcardquestionInfo where flashCardId="];
queryStr=[queryStr stringByAppendingString:martialStr];
NSString *martialStr1=[NSString stringWithFormat:@"%d", categoryId];
NSString *queryStr2=[[NSString alloc] initWithString:@" and categoryId="];
queryStr2=[queryStr2 stringByAppendingString:martialStr1];
queryStr=[queryStr stringByAppendingString:queryStr2];
unsigned int lengthOfString=[queryStr length];
char temp2[lengthOfString +1];
strcpy(temp2, [queryStr cStringUsingEncoding:NSUTF8StringEncoding]);
clsDatabase *clsDatabaseObject = [[clsDatabase alloc] init];
sqlite3_stmt *dataRows = [clsDatabaseObject getDataset:temp2];
while(sqlite3_step(dataRows) == SQLITE_ROW) {
flashCardText =[NSString stringWithUTF8String:(char *)sqlite3_column_text(dataRows,0)];
flashCardAnswer=[NSString stringWithUTF8String:(char *)sqlite3_column_text(dataRows,1)];
flashCardTotalOption=sqlite3_column_int(dataRows,2);
}
sqlite3_reset(dataRows);
sqlite3_finalize(dataRows);
[clsDatabaseObject release];
}
私は表のセルをクリックすると、文字列値(flashCardAnswer)が無効を示しています。
IMO、明示的に保持または明示のallocを使用するよりも明白な答えは、文字列の作成コードを保持しますが、インスタンス変数を設定するセッターを使用することです。 – Chuck
合意した、明白なアプローチが私を逃れたとは信じられない。 :-) –
'cStringUsingEncoding'の前に構文エラーが表示されています。すでにインスタンス変数を設定するためにセッターを使用しています。 –