2011-07-18 2 views
0

NSNumberにキーを変換するにはどうすればよいですか?このコードは私にエラーを与えます:NSDictionaryのキーをNSNumberに変換します。

私はそれを試しても、私はいつもエラーで終わります: 'NSIntegar'(aka 'int')から 'NSNumber'に代入する互換性のない整数からポインタへの変換。ここ

 for (id key in consultants) 
    { 
     consultantData = [[ConsultantData alloc] init]; 

     consultantData.name = [consultants objectForKey:key]; 
     consultantData.conID = [[NSNumber numberWithInteger:key] integerValue]; 

     NSLog(@"name: %@ ID: %@", consultantData.name, consultantData.conID); 

     [consultantList addObject:consultantData]; 
     [consultantData release]; 
    } 

は私のオブジェクトがConsultantDataです:私はisMemberOfClassをしようとした場合

#import <Foundation/Foundation.h> 

@interface ConsultantData : NSObject 
{ 
    NSString *name; 
    NSNumber *conID; 
} 

@property (nonatomic, retain) NSString *name; 
@property (nonatomic, retain) NSNumber *conID; 

@end 

#import "ConsultantData.h" 


@implementation ConsultantData 

@synthesize name; 
@synthesize conID; 

-(void) dealloc 
{ 
    [name release]; 
    [conID release]; 

    [super dealloc]; 
} 

@end 

、それがtrueを返すことはありません。私はisKindOfClassしようとすると、それは私にNSStringを教えてくれます。

consultantsは私のサーバーからXMLRPC関数(サーバーはPHP)を経由して受け取る辞書です。私が見たことから、すべてがサーバー辞書の文字列です。

答えて

2

あなたは順序が間違っていることである可能性があります。

consultantData.conID = [[NSNumber numberWithInteger:key] integerValue]; 

あなたはおそらく冗長な形式である

consultantData.conID = [NSNumber numberWithInteger:[key integerValue]]; 

をしたい

NSNumber *foo = [NSNumber numberWithInteger:key]; 
NSInteger bar = [foo integerValue]; 
consultantData.conID = bar; 

を意味します

NSInteger foo = [key integerValue]; 
NSNumber *bar = [NSNumber numberWithInteger:foo]; 
consultantData.conID = bar; 
+0

ha!それは完璧に働きました。正解をもらった他の人に感謝します。私は壁に向かって私の頭を強く叩いた。 – Log139

1

consultantData.conID = [[NSNumber numberWithInteger:key] integerValue];

上の行は次のようになります。

consultantData.conID = [NSNumber numberWithInteger:[key integerValue]]; 
0

するIntegerValueをするNSNumberないNSIntegerを返します。それが整数ではないので、あなたは直接のNSNumberを渡す必要があります:

consultantData.conID = [NSNumber numberWithInteger:[key integerValue]]; 
1

は、あなたの鍵がNSStringのであると仮定すると、あなたは、[キーのNSNumber numberWithInteger]にキーを渡すことはできません!キーでintValueメソッドを使用して整数を取得し、整数をNSNumberに変換します。

consultantData.conID = [NSNumber numberWithInteger:[key intValue]]; 
+0

最初の点は間違っています。高速列挙で使用すると、[辞書はそのキーを列挙する](http://tinyurl.com/3sz3bpy)。 '.allKeys'は必要ありません。 – Caleb

+0

あなたは正しいです。明らかに、私がそれを放棄した時は、値を反復したいときでした。訂正ありがとう! – progrmr

関連する問題