2

like からa を抽出するための構文は次CGFloatのようになります。NSDictionary

slider.minimumValue = [filterAttributes valueForKey:kCIAttributeSliderMin];
4

2 に答える 2

7

NSDictionaryオブジェクトのみを保持します。どのような種類のオブジェクトがどのようなプリミティブをラップしCGFloatますか?NSNumber理にかなっているでしょう。ここで、CGFloatはafloatまたはaのいずれかであるため、精度/範囲を維持するために値をdouble取得する必要があります。double

したがって:

slider.minimumValue = [[filterAttributes valueForKey:kCIAttributeSliderMin] doubleValue];
于 2013-01-30T19:42:48.687 に答える
7

OBJECTS は NSDictionary (または NSARRAY) にのみ入れることができます。CGFloat はリテラル (float にマップするだけ) であるため、ディクショナリに入れたり、ディクショナリから取得したりすることはできません。

代わりに、オブジェクトである NSNumber (辞書に追加するとき) としてラップします。

NSNumber *sliderMin = [NSNumber numberWithFloat:kCIAttributeSliderMin]

または、新しい構文を使用して、NSNumber として@kCIAttributeSliderMinorを自動ボックス化することができます。@(kCIAttributeSliderMin)

値を元に戻すには、オブジェクトを取得してNSNumberから[myNumber floatVal]NSFloat.

objectForKey最後に、おそらく " " ではなく " "と言いたいでしょうvalueForKey

更新- 申し訳ありませんが、あなたの例でkCIAttributeSliderMinはキーとして扱っています。私はそれを「値」として使用しています。しかし、あなたは要点を理解していると思います。NSNumber オブジェクトを格納します。NSNumber オブジェクトを取得します。スワップが原因で混乱が生じたことをお詫び申し上げます。

于 2013-01-30T19:46:17.753 に答える