0

IBAForms を使用してプロジェクト用の単純なフォームを作成していますが、de フィールドから値を取得することを除いて、ほとんどすべてを達成しました。私はこのコードを持っています:

    NSLog(@"SUBMIT");
id values = [[self formDataSource] modelValueForKeyPath:@"diabetePickListItem"];
for (id key in values){
    id values = [values objectForKey:key];

    NSString *keyString = (NSString *)key;
    NSLog(@"%@",keyString);
    NSString *valueString = (NSString *)values;
    NSLog(@"%@",valueString);
}

NSLog(@"diabetes %@", values);

コンソールに次の出力が表示されます。

2012-10-07 07:02:37.145 BigBlueTest[64483:10403] SUBMIT
2012-10-07 07:02:37.147 BigBlueTest[64483:10403] Yes
2012-10-07 07:02:37.148 BigBlueTest[64483:10403] (null)
2012-10-07 07:02:37.150 BigBlueTest[64483:10403] diabetes {(
Yes
)}

私が理解していないのは、modelValueForKeyPath メソッドから返された値からキーを取得する方法です。高速な列挙を行わずに、「はい」または「いいえ」の値を取得したいだけです。このコードで何が欠けているのか本当にわかりません。どんな助けでも本当に感謝します。前もって感謝します。

編集:

問題は、objectAtIndex を使用しようとすると、-[__NSCFSet objectAtIndex:]: unrecognized selector sent to instance エラーが発生することです。私が取り組んでいるアプリケーションには、単純な情報を収集するためのフォームが含まれています。フォームに完全に入力し、値の内容を印刷すると、次の出力が得られます。

NSLog(@"%@",_formValues);

2012-10-08 11:27:48.524 BigBlueTest[17285:10403] {
    activityPickListItem = "{(\n    Running/jogging\n)}";
    bloodAfter = 60;
    bloodBefore = 58;
    diabetePickListItem = "{(\n    Yes\n)}";
    durationPickListItem = "{(\n    10 or less\n)}";
    intensityPickListItem = "{(\n    Moderate\n)}";
    lowGlucoseSyntom = "{(\n    No\n)}";
    pickInsulinUse = "{(\n    Yes\n)}";
    pickMeasureUnit = "{(\n    mmol/L\n)}";
    recentMealPickListItem = "{(\n    30 minutes ago\n)}";
}

valueForKeypath を使用すると、この形式 {(value)} で値を取得します。文字列値を取得する方法がわかりません。NSDictionary と NSArray のメソッドを試してみましたが失敗しました。返信ありがとうございます。

4

2 に答える 2

0

私は Objective C のベテランではありませんが、値を配列にするべきではありませんか? そして、問題は型キャスト ステートメント " (NSString *)values" に関係しているようです。これは非常に珍しく、少し間違っているように見えます。NSStringを返すように見えるので、別のアプローチで a の値を変換する必要があると思いますNULL。たぶん、次のようなことを試すことができます NSString *valueString = [NSString stringWithString:[values objectAtIndex:yourIndex](または、NSRangeより多くのオブジェクトに a を使用します)

于 2012-10-07T12:32:02.587 に答える
0

私は IBAForms に精通していませんが、値がコレクションを提供しているようです。行 ID 値の直後にブレークポイントを設定することをお勧めします...そして値に返されるものを見てください。状況依存のツール ヒントが XCode で機能しないことがあります。その場合po valuesは、デバッグ ウィンドウに入力できます。それはあなたが何を扱っているかをよりよく理解するはずです。

于 2012-10-07T13:59:29.700 に答える