2

エラーが発生しました -[NSCFString stringValue]: unrecognized selector sent to instance 0x1578c when running this code 何をしているのか理解できません 間違った名前は NSString です

self.searchValues= [[NSMutableArray alloc] init];
name=@"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]);
4

4 に答える 4

3

まず、[... stringValue] メッセージを削除できます。その必要はありません。そのオブジェクトはすでに文字列です。次に、NSString オブジェクトには %s の代わりに %@ を使用する必要があります。

注: %@ は、どのオブジェクトに対しても機能します。試す

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

私を信じてください、試してみる価値があります。

于 2009-07-29T23:05:21.777 に答える
2

NSString に「stringValue」メソッドがないため、エラーになります。

本当に C 文字列として値が必要な場合は、必要なメソッドは UTF8String です。ただし、ロギングの場合は、%s を %@ に変更し、NSString オブジェクトを直接ログに記録する必要があります。

于 2009-07-29T23:06:10.357 に答える
1

この場合、使用する必要はありませんstringValue(編集:NSStringメソッドがないため、他の人が投稿したように、実際にはエラーですstringValue)。

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

これがどのように見えるかです:

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

    NSLog(@"Array value: %@", [[searchValues objectAtIndex:0]
                                 objectForKey:@"Value"]);
}
于 2009-07-29T23:08:28.260 に答える
0

name変数のプロパティがある場合は、操作を実行するときにself.nameを使用します。それ以外の場合は、プロパティを宣言する意味がありません。

于 2012-10-10T13:32:49.667 に答える