0

私は iPhone アプリを開発しています。データ フォーム sqlite3 を表示する必要があるボタンと tableViewController を含むビュー コントローラーを作成しました。xcode 3.4 を使用しています。そのテーブルを開こうとすると、viewController で TableViewController を開くボタンが必要です。ボタンなしでストーリーボードに移動し、TableViewController に raw を配置すると、sqlite のデータが正常に読み込まれますが、viewController に raw を配置し、ボタンを TableViewController に接続し、接続をモーダルにしてから実行すると..ボタンを押すと、次の例外が発生します。 NSInvalidArgumentException', reason: '-[NSIndexPath isEqualToString:]: unrecognized selector sent to instance ...

例外は ( cellForRowAtIndexPath)内の行を参照します。

ここに私のコードがあります:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}

Books *temp= (Books *)[self.books objectAtIndex:indexPath.row];


// [cell setText:temp.bo_name];
[cell setText:[NSString stringWithFormat:@"%d - %@ - %d - %d - %d - %d - %@ - %f - %f - %@ - %f - %d - %@ - %d",temp.bo_id, temp.bo_name, temp.bo_au_id, temp.bo_pub_id, temp.bo_num_pages, temp.bo_publish_year, temp.bo_about, temp.bo_price, temp.bo_currency, temp.bo_cover_img, temp.bo_recomended, temp.bo_sec_id, temp.bo_path, temp.bo_sort]];

return cell;

}

編集して、私の回答のコメントで指定されたインスタンス変数のタイプを追加します - JeremyP.

int bo_id; 
NSString *bo_name; 
int bo_au_id; 
int bo_pub_id; 
int bo_num_pages; 
int bo_publish_year; 
NSString *bo_about; 
double bo_price; 
double bo_currency; 
NSString *bo_cover_img; 
double bo_recomended; 
int bo_sec_id; 
NSString *bo_path; 
int bo_sort; 
4

2 に答える 2

1

setText非推奨です。の代わりに[cell setText:[NSString stringWithFormat:@"%d...

cell.textLabel.text =[NSString stringWithFormat:@"%d...

%d - %@ - %d - %d - %d - %d - %@ - %f - %f - %@ - %f - %d - %@ - %dエラーは、引数の不一致を引き起こす長さのどこかにある可能性があります( NSInvalidArgumentException)。リストを注意深く調べて、エラーを見つけてください。個々の要素のデータ型を確認せずに判断することは困難です。

于 2012-04-17T13:13:46.570 に答える
0

問題が何であるかを確実に言うことは不可能ですが、あなたの引数stringWithFormat:とそのフォーマット指定子の間に不一致があることはほぼ確実です。

対応するすべてのもの%dが実際にはintであり、longintやshortintではないことを確認してください。%@として指定されているものが実際にオブジェクトポインタであることを確認してください。また、ここで使用されているクラスのいずれかをオーバーライド-descriptionした場合は、間違いがないことを確認してください。

実際のエラーはに送信-isEqualToString:することによって発生するため、誤ってどこかで文字列としてNSIndexSet扱っている可能性があります。NSIndexSet

于 2012-04-17T14:51:05.853 に答える