0

iOs プログラミングを学ぼうとしています。これは少し逆の質問だと思います。

Xcodeを使用してYouTubeでチュートリアルを完了し、SQLite3データベースからデータを保存、一覧表示、削除できるシンプルなiPhoneアプリを作成しました(作成したいアプリにはデータベースが必要になるため)。

しかし、ビデオをアップした男は、自分がしたことの「理由」を説明していないようだったので、私は今、コードの各ビットが何をしているのかを理解しようとしています (私は PHP と SQL の Web プログラミングのバックグラウンドを持っているので、データベースへのアクセス、データ行の呼び出しなどを理解して、Web サイトにコンテンツを表示します)。

私がよく理解していないこのiOsビットの一部は、どこにも宣言されていないように見えるため、使用される %s および %d 値です。

コードは次のとおりです。

if(sqlite3_open([dbPathString UTF8String], &personDB)==SQLITE_OK) {
        NSString *inserStmt = [NSString stringWithFormat:@"INSERT INTO PERSONS(NAME,AGE) values ('%s', '%d')",[self.nameField.text UTF8String],[self.ageField.text intValue]];

%s と %d は、self.nameField と self.ageField から明確に値を取得するようになりました。しかし、それはテーブルに 2 つの値しか送信できないことを意味しますか? または、他の値には他の%がありますが、確かに最大26です。

どなたかご説明いただければ幸いです。

また、iOS のコーディングを学ぶための他の完全に説明された方法について何か提案はありますか? 特に、C プログラミングのスキルが限られていて、iOS プログラミングを初めて学習する初心者の場合は特にそうです。私が探している領域は、いくつかのテキスト フィールドと画像を保存するアプリを作成することです。これらはデータベースに保存され、画像はデータベースに保存されるか、リンクとして適切な名前が付けられます。画像を操作してサイズを変更できるようにしたいので、iPhone ディスプレイ用に最適化されます (APP に HD 画像は必要ありません)。データベース(sqlite3)ファイルをオンラインストレージ(自分のサーバーまたはドロップボックス)に、

4

5 に答える 5

1

%sおよび%dはそれぞれ、文字のヌル終了配列および符号付き 32 ビット整数のフォーマット指定子です。指定子の詳細については、String Programming Guideを参照してください。ただし、SQL インジェクションの危険にさらされるため、SQLite ステートメントでは文字列をこのようにフォーマットしないでください。代わりに、適切な関数を使用して値をバインドする必要があります。あなたの状況では、forとforを使用します。?sqlite3_bind*sqlite3_bind_textNAMEsqlite3_bind_intAGE

于 2012-11-20T21:38:38.417 に答える
0

クラスリファレンスをご覧ください: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html

文字列フォーマット指定子は次のとおりです: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265

ご覧のとおり、%dは整数を%s出力し、 は文字列を出力しています。

于 2012-11-20T21:34:20.660 に答える
0

パート1:

% 規則「文字列書式指定子」は、文字列置換の一般的な標準です。

これらは変数ではなく、型付きの置換プレースホルダーです。

%s --> string
%d --> number

パート 2: iTunes U コースをチェックしてみてください。

Jan Borchers 教授による iPhone アプリケーション プログラミング '11

https://itunes.apple.com/us/itunes-u/iphone-application-programming/id474416629

于 2012-11-20T21:35:01.437 に答える
0

これはフォーマットされた文字列と呼ばれるもので、基本的には文字列に値を挿入する方法です。% 記号の後の文字は、値をフォーマットするデータ型を示すために使用されます。あなたの場合、 %s は文字列値を示すために使用され、 %d は10進整数値を示すために使用されます。

このタイプの文字列フォーマットは非常に一般的です。多くのプログラミング言語は、このタイプの文字列フォーマットを実行するための何らかのメカニズムを提供しており、フォーマット記号は大部分が標準化されています。詳細については、C++ の Web サイト を参照してください。

于 2012-11-20T21:39:17.070 に答える
0

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

%s 8 ビット符号なし文字のヌル終了配列。%s 指定子を使用すると、文字がシステムのデフォルト エンコーディングで解釈されるため、特に右から左へ記述する言語では、結果が変化する可能性があります。たとえば、RTL では、文字の方向性が強くない場合、%s は方向マーカーを挿入します。このため、%s を避け、エンコーディングを明示的に指定することをお勧めします。

%d、%D 符号付き 32 ビット整数 (int)。

于 2012-11-20T21:35:22.653 に答える