2009-07-29 4 views
2

- [NSCFStringのstringValue]:このコード を実行するときに認識されていないセレクタがインスタンス0x1578cに送られた私は、私はあなたができる、間違った 名はまずNSStringのNSMutableArrayで文字列を取得する:なぜ機能しないのですか?私は、エラーがいる

self.searchValues= [[NSMutableArray alloc] init]; 
[email protected]"Bob"; 
if(self.name!=nil) 
    [searchValues addObject: [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Name",@"Label",self.name,@"Value",nil]]; 
NSLog(@"Array value : %s",[[[searchValues objectAtIndex:0] objectForKey:@"Value"] stringValue]); 

答えて

3

でやっているのか理解していません[... stringValue]メッセージをドロップします。そのオブジェクトはすでに文字列です。次に、NSStringオブジェクトの%sの代わりに%@を使用する必要があります。

注:%@は、すべてのオブジェクトで、まったく同じです。試してみる価値はありますか?

NSLog(@"Array: %@", searchValues); 

+0

ありがとうございました!私はそれを数時間笑ってからだった – Mathieu

2

NSStringに "stringValue"メソッドがないため、エラーです。

実際に値をC文字列として使用する場合、必要なメソッドはUTF8Stringです。しかし、あなたのロギングの場合、%sを%@に変更し、NSStringオブジェクトを直接ログに記録してください。

1

編集:他の人が投稿したとしてNSStringstringValueメソッドを持っていないので、それは、実際にはエラーである)、この場合にstringValueを使用する必要はありません。

辞書から出てくるオブジェクトは、すでにNSStringです。あなたがすべきことは、NSLog関数がオブジェクトを適切なココアオブジェクトとして扱えるようにすることです。そのためのコードはで、%sではなく、%sはCスタイルの文字列のため、コードは%@ではありません。ここで

は、それがどのように見えるべきかです:

self.searchValues = [[NSMutableArray alloc] init]; 
[email protected]"Bob"; 
if(self.name!=nil) 
{ 
    [searchValues addObject: [NSMutableDictionary 
      dictionaryWithObjectsAndKeys:@"Name", @"Label", 
             self.name,@"Value", 
             nil]]; 

    NSLog(@"Array value: %@", [[searchValues objectAtIndex:0] 
           objectForKey:@"Value"]); 
} 
0

名前の変数のプロパティを持っている場合は、その上に任意の操作を実行するときにself.nameを使うそうでない場合はプロパティを宣言するのは意味がありません。

関連する問題