WEBアプリケーション研究室 開発ノート TOP

WEBアプリケーション研究室 開発ノート 2012年11月

スポンサーサイト

-------- --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

    このエントリーをはてなブックマークに追加

FMDatabaseというiOSからsqlite3を扱うライブラリを使用しています。

INSERT時にEXC_BAD_ACCESSでクラッシュしました。実行していたコードはこんなかんじです。


FMDatabase *db = [FcDb createFotocaseConnection:3];//接続を生成する
[db beginTransaction];
[db executeUpdate:@"INSERT OR REPLACE INTO tag (id, seq, parent_tag_id) VALUES (?, ?, ?)", 1, 2, 3];
[db commit];
多少省略していますが概ねこんなかんじです。クラッシュした場所を見るとFMDatabase.mの795行目

obj = va_arg(args, id);
で死んでます。?のplaceholderを組み立ててるところだと思いますが、どうやら、bindする値の型はidのみ受け付けるようです。

[db executeUpdate:@"INSERT OR REPLACE INTO tag (id, seq, parent_tag_id) VALUES (?, ?, ?)", @"1", @"2", @"3"];
これでいけました。本来はNSNumberの方がいいのかな?実際のコードではhttp経由で取得したxmlから値をとって突っ込むので、とりあえずNSStringのまま入れてみました。

    このエントリーをはてなブックマークに追加
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。