2016-07-28 11 views
-1

Objective-CのNSObjectオブジェクトをNSNumberに変換するには?アンドロイドでNSObjectをNSNumberに変換する

私はこれを行う:

if(value instanceof Integer){ 
    intValue = (Integer)value; 
} 

しかし、どのように私はObjective-Cで値を変換することができますか?

マイコード:

-(void)changeWithValue:(NSObject*)value{ 
    if([value isKindOfClass:[NSNumber class]]) 
      float floatValue = [value floatValue]; 
} 

しかし、それは:(

が動作していない私を助けてくださいおかげ

+0

コードを表示しますあなたが試していること。 –

+0

Obj-cでは、「整数」はオブジェクトではありませんので、注意してください。例えばNSNumberのintValueはNSNumberではなく整数を返します – Bienemann

+0

メソッドが戻るときに消えるローカル変数に値を代入するので、2番目のメソッドは効果がないことに気付きます。それはあなたが「働いていない」という意味ですか? – Droppy

答えて

3

を試してみます。あなたのエラーはObjective-C-eseの解決策ですパラメータタイプとしてidを使用します。タイプidは「任意のオブジェクトタイプ」を意味し、コンパイラーは任意のメソッドを呼び出すことができます。あなたはrespondsToSelector:を使用してメソッドをテストするのではなくタイプのためにそれがより一般的にすることができ

- (void)changeWithValue:(id)value 
{ 
    if([value isKindOfClass:[NSNumber class]]) 
    { 
     float floatValue = [value floatValue]; 
     ... 
    } 
    else 
    { 
     // handle not an `NSNumber` 
    } 
} 

:だから、の線に沿ってコードを持っているでしょう

- (void)changeWithValue:(id)value 
{ 
    if([value respondsToSelector:@selector(floatValue)]) 
    { 
     float floatValue = [value floatValue]; 
     ... 
    } 
    else 
    { 
     // handle case where value does not support floatValue 
    } 
} 

HTH

+0

あなたの答えとあなたの説明のためにありがとう:) – Katya

1

はあなたが解明した後、この

-(void)changeWithValue:(NSObject*)value{ 
if([value isKindOfClass:[NSNumber class]]) 
     NSNumber *num = (NSNumber*)value; 
     float floatValue = [num floatValue]; 
} 
+0

ありがとうございました:) – Katya

+1

OPとどのように違うのですか? NSNumberへのキャストはまったく違いはありません。 – Droppy

+0

ドロピー、私はあなたを理解していません – Katya

関連する問題