2011-01-06 1 views
11

私はNSConcreteValueを受け取っているライブラリを持っていて、それに対処する方法がわかりません。私が得るべきオブジェクトはブール値であることを知っているので、どうすれば実際の価値を逃すことができますか?NSConcreteValueとは何ですか?その値をどのように抽出しますか?

+1

はどのようにあなたがNSConcreteValueを得ることを知っています:-)これを作ってるんですか?このリンクhttp://lists.apple.com/archives/cocoa-dev/2003/Oct/msg00096.htmlによると、NSValueクラスのプライベートサブクラスかもしれません。それを確認してみてください(リンクに記載されています)。また、NSLog(@ "%s"、[yourConcreteValue objCType])をログに記録して、そのオブジェクトに格納されている正確なタイプを確認してください。 – Vladimir

答えて

12

これは、NSValueで働いているときに舞台裏で使用されるときどき(またはすべての時間ですか?)プライベートクラスです。少なくともそれは私の印象です。私はあなたがNSValueにキャストすることができるはずだと思う:

// assuming value is of type “id” 
NSAssert([value isKindOfClass:[NSValue class]], 
    @"Sorry, I was wrong. Maybe try anyway?"); 
NSAssert(strcmp(@encode(BOOL), [value objCType]) == 0, 
    @"The value does not seem to hold a BOOL."); 
BOOL unwrappedValue; 
[value getValue:&unwrappedValue]; 

...またはそのような何か、私は

+0

NSAssertを使ってクラスと値の型を検証する素晴らしい例です。 (おそらく 'NSValue'にキャストする必要はないかもしれません - 単に' -getValue: 'を使用してください) –

+0

あなたは正しいです、私は彼が' NSConcreteValue'として値を得ていないと確信しています。おそらく彼はコレクションなどからIDを取得する可能性が高いので、私はその答えを編集します。 – zoul

関連する問題