String in NSMutableArray bekommen: Warum funktioniert es nicht?
-
05-07-2019 - |
Frage
ich den Fehler haben - [NSCFString String]: Unbekannter Selektor zum Beispiel 0x1578c gesendet, wenn Sie diesen Code ausführen Ich verstehe nicht, was ich falsch mache Name ist ein 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]);
Lösung
Zum einen können Sie die [... String] Nachricht fallen. Es ist nicht notwendig, das Objekt ist bereits ein String. Zweitens sollten Sie% @ statt% s für NSString Objekte verwenden.
Hinweis:% @ für jedes Objekt funktioniert überhaupt, was das betrifft. Versuchen
NSLog(@"Array: %@", searchValues);
Vertrauen Sie mir, es ist einen Versuch wert.
Andere Tipps
Es gibt keinen "String" -Methode auf NSString, damit der Fehler auf.
Wenn Sie wirklich den Wert als C-String wollen, ist die Methode, die Sie wollen UTF8String. obwohl für Ihre Protokollierung Fall sollten Sie nur% ändern s in% @, und melden Sie sich die NSString Objekt direkt.
Es gibt keine Notwendigkeit stringValue
in diesem Fall zu verwenden ( Bearbeiten es ist tatsächlich ein Fehler, wie andere geschrieben haben, weil NSString
keine stringValue
Methode hat).
Das Objekt, das aus Ihrem Wörterbuch kommt, ist bereits ein NSString
. Was Sie tun sollen, ist die NSLog
Funktion erlaubt das Objekt als richtiges Kakao Objekt zu behandeln. Der Code für das heißt %@
, nicht %s
, da %s
für C-Strings ist.
Hier ist, wie es aussehen sollte:
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"]);
}
Wenn Sie Eigenschaft für Namensvariable haben dann self.name verwenden, wenn auf sie eine Operation auszuführen sonst gibt es keine Bedeutung ist Eigentum erklärt.