NSMutableArrayで文字列を取得する:なぜ機能しないのですか?
-
05-07-2019 - |
質問
エラーが発生しました-[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を使用します。そうしないと、プロパティを宣言する意味がありません。
所属していません StackOverflow