質問

エラーが発生しました-[NSCFString stringValue]:このコードの実行時に認識されないセレクターがインスタンス0x1578cに送信されました 私が間違っていることを理解していない 名前は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]);
役に立ちましたか?

解決

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

注:%@は、すべてのオブジェクトで機能します。お試しください

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

信頼してください、試してみる価値はあります。

他のヒント

" stringValue"はありませんNSStringのメソッド、したがってエラー。

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

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

辞書から出てくるオブジェクトはすでに NSString です。あなたがすべきことは、 NSLog 関数がオブジェクトを適切なココアオブジェクトとして処理できるようにすることです。そのコードは%s ではなく%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"]);
}

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top