web-dev-qa-db-de.com

So erhalten Sie Werte aus einem Wörterbuch in iOS

Ich bin neu bei iOS . Ich habe eine Login-Seite erstellt und alles funktioniert gut. Ich habeJSONzur Überprüfung von Benutzername und Passwort verwendet und die Antwort vom Server in einem Dictionary - Format erhalten. Ich möchte die Werte aus dem dictionary extrahieren und sie in meinem Programm überprüfen. Die Antwort, die ich vom Server bekomme, lautet:

json: {
        error = 0;
        msg = "";
        value = {
                  user = false;
                };
      };

Zuerst möchte ich überprüfen, ob der Wert mit der Tasteerror0oder1ist. Dann möchte ich den Wert mit der Tasteuserüberprüfen. Ich weiß nicht, wie ich das programmieren soll, um es zu überprüfen. Kann jemand helfen?

Der Code, den ich ausprobiert habe, ist unten:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *respString = [[NSString alloc] initWithData:loginJSONData encoding:NSUTF8StringEncoding];

    SBJsonParser *objSBJSONParser = [[SBJsonParser alloc] init];

    NSDictionary *json = [[NSDictionary alloc] initWithDictionary:[objSBJsonParser objectWithString:respString]];

    NSLog(@"json: %@",json);

    NSString *error = [json objectForKey:@"error"];

    NSLog(@"error: %@", error);

    if ([error isEqualToString:@"o"])
    {
        NSLog(@"login successful");
    }
    else
    {
        NSLog(@"login fail");
    }
}
11
Saba Sayed

Mit dem modernen Objective-C wird der Zugriff auf Dinge in Arrays und Wörterbüchern einfacher.

Sie sollten die folgende Syntax verwenden:

id<NSObject> value = dictionary[@"key"];

Ähnlich, 

id<NSObject> value = array[1]; // 1 is the index

Anwenden des obigen auf die Frage:

NSString *error = json[@"error"];

NSDictionary *value = json[@"value"];

BOOL user = [json[@"value"][@"user"] boolValue];

Wie in der obigen Zeile ist das Schachteln erlaubt, aber es ist keine gute Praxis.

14
cream-corn
NSNumber *error = [json objectForKey:@"error"];
if ([error intValue] == 0)
{
    NSLog(@"login successful");

    NSDictionary *value = [json objectForKey:@"value"];
    NSNumber *user = [value objectForKey:@"user"];
    if ([user boolValue])
    {
        NSLog(@"user == true");
    }
    else
    {
        NSLog(@"user == false");
    }
}
else
{
    NSLog(@"login failed");
}
3

Die Wörterbücher, die normalerweise vom Server zurückgegeben werden, werden als Schlüsselwertpaar verwendet. Wenn Sie auf diese Werte zugreifen möchten, die einem Schlüssel entsprechen, kann Ihnen dieser Code helfen

NSString *varname = [[NSString alloc]initWithFormat:@"%@",[dictionaryname objectForKey:@"key"]];
2
SARATH SASI

Für get error value aus Ihrem JSON Dictionary.

NSString *error = [myJSONDicName objectForKey:@"error"];

Für get user value aus Ihrem JSON Dictionary.

NSString *error = [[myJSONDicName objectForKey:@"value"] objectForKey:@"user"];

BEARBEITET:

Sie müssen nur in Ihrem ändern 

if ([error isEqualToString:@"o"])
                            _^_
                             |

'o' in '0' ändern

1
iPatel

Sie können den folgenden Code verwenden

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
   {
          NSString *respstring = [[NSString alloc]initWithData:loginJsonData encoding:NSUTF8StringEncoding];
          NSDictionary *dic = [responseString JSONValue];
         NSLog(@"%@",dic);
         NSNumber *error = [dic objectForKey:@"error"];
        if([error intValue] == 0)  {
           NSLog(@"login successful");
        }
        else
        {
            NSLog(@"login fail");
        }

        NSString *user = [value objectForKey:@"user"];
        BOOL userStatus = [user boolValue];
 }
0
manujmv