0

SQLite3 プログラムを作成しています。コード内でデータベースを作成しています。約15列あります。以下の例:

NSString *createSQL = "CREATE TABLE IF NOT EXISTS FIELDS (DATE TEXT PRIMARY KEY,
                   NAME TEXT,           /*COLUMN #1 */
                   CLASS TEXT,          /*COLUMN #2 */
                   ...
                   COMPLETED TEXT);";  /*COLUMN #15 */

コンパイルすると、「missing terminating character」エラーが発生します。いくつかの調査を行ったところ、これは C-String であるため、CR\LF を継続文字として処理することがわかりました。そのようなコード行を作成したくありません。 SQL で何かを行う必要があるたびに、画面の右端をスクロールします.このエラーを発生させずに、別の行に分割できる文字列を作成する方法はありますか?

4

3 に答える 3

2

2つのこと:

  1. @文字列が始まる前に文字が必要です。NSString リテラル@"look like this"

  2. 文字列が複数の行に分割されているため、コンパイラが混乱しています (これが表示されているエラーです)。完全に 1 行にする必要があります。このように分割したい場合は、次のように各行を引用符で囲みます。

_

NSString * foo = @"foo "
                  "bar "
                  "baz";

または、バリーがここで言うように、各行の末尾にバックスラッシュを使用して継続を示します。

于 2010-12-21T04:00:46.363 に答える
1

こんにちは、Objective C で必要な文字列の先頭に @ 文字を配置するのを忘れていると思います

NSString *createSQL = @"CREATE TABLE IF NOT EXISTS FIELDS (DATE TEXT PRIMARY KEY, NAME TEXT, //COLUMN #1 CLASS TEXT, //COLUMN #2 ... COMPLETED TEXT);"; //列 #15

于 2010-12-21T03:50:26.033 に答える
0

Objective-C では、C と同様に、行継続マーカー\を使用して文字列リテラルを複数行に分割できます。あなたの例は次のようになります( はリテラル@を示すことに注意してください):NSString

NSString *createSQL = @"CREATE TABLE IF NOT EXISTS FIELDS (DATE TEXT PRIMARY KEY, \
                   NAME TEXT,  \       /*COLUMN #1 */
                   CLASS TEXT, \       /*COLUMN #2 */
                   ...         \
                   COMPLETED TEXT);";  /*COLUMN #15 */
于 2010-12-21T04:00:41.373 に答える