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]);
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top