-2

NSDictionary から「firstName」、「lastName」、「gender」、「homeCity」、「email」を取得しようとしています

しかし、うまくいきません...次のコードを試しました:

NSDictionary *userInfo  = [fsUser getUserInfo:@"self"];

NSLog(@"userInfo: %@", userInfo);
NSLog(@"name: %@", [userInfo objectForKey:@"firstName"]);
NSLog(@"lastName: %@", [userInfo objectForKey:@"lastName"]);
NSLog(@"gender: %@", [userInfo objectForKey:@"gender"]);
NSLog(@"homeCity: %@", [userInfo objectForKey:@"homeCity"]);
NSLog(@"email: %@", [userInfo objectForKey:@"email"]);

これが私の辞書の値です...

  userInfo: {

userDictionary =     {
    meta =         {
        code = 200;
        errorDetail = "Please provide an API version to avoid future errors.See http://bit.ly/vywCav";
        errorType = deprecated;
    };
    notifications =         (
                    {
            item =                 {
                unreadCount = 0;
            };
            type = notificationTray;
        }
    );
    response =         {
        user =             {
            badges =                 {
                count = 0;
                items =                     (
                );
            };
            bio = "";
            checkinPings = off;
            checkins =                 {
                count = 0;
            };
            contact =                 {
                email = "email@email.com";
            };
            firstName = Name;
            following =                 {
                count = 0;
            };
            friends =                 {
                count = 0;
                groups =                     (
                                            {
                        count = 0;
                        items =                             (
                        );
                        name = "Amigos em comum";
                        type = friends;
                    },
                                            {
                        count = 0;
                        items =                             (
                        );
                        name = "Outros amigos";
                        type = others;
                    }
                );
            };
            gender = male;
            homeCity = "";
            id = 3233312;
            lastName = lastName;
            lists =                 {
                groups =                     (
                                            {
                        count = 1;
                        items =                             (
                        );
                        type = created;
                    }
                );
            };
            mayorships =                 {
                count = 0;
                items =                     (
                );
            };
            photo = "https://foursquare.com/img/blank_boy.png";
            photos =                 {
                count = 0;
                items =                     (
                );
            };
            pings = 0;
            referralId = "u-sdsad";
            relationship = self;
            requests =                 {
                count = 0;
            };
            scores =                 {
                checkinsCount = 0;
                goal = 50;
                max = 0;
                recent = 0;
            };
            tips =                 {
                count = 0;
            };
            todos =                 {
                count = 0;
            };
            type = user;
        };
    };
};
   }
4

4 に答える 4

2

ここで、キー値コーディング (KVC) が役に立ちます。あなたはすることができます(の使用に注意してくださいvalueForKey:

NSDictionary *userInfo = [fsUser getUserInfo:@"self"];
NSLog(@"userInfo: %@", userInfo);
NSLog(@"name: %@", [userInfo valueForKey:@"response.user.firstName"]);
NSLog(@"lastName: %@", [userInfo valueForKey:@"response.user.lastName"]);
NSLog(@"gender: %@", [userInfo valueForKey:@"response.user.gender"]);
NSLog(@"homeCity: %@", [userInfo valueForKey:@"response.user.homeCity"]);
NSLog(@"email: %@", [userInfo valueForKey:@"response.user.email"]);

しかし、同じ辞書を深く掘り下げ続けるため、これはあまり効率的ではありません。これを行う方が良いでしょう:

NSDictionary *userInfo = [fsUser getUserInfo:@"self"];
NSDictionary *user = [userInfo valueForKey:@"response.user"];
NSLog(@"userInfo: %@", userInfo);
NSLog(@"name: %@", [user objectForKey:@"firstName"]);
NSLog(@"lastName: %@", [user objectForKey:@"lastName"]);
NSLog(@"gender: %@", [user objectForKey:@"gender"]);
NSLog(@"homeCity: %@", [user objectForKey:@"homeCity"]);
NSLog(@"email: %@", [user objectForKey:@"email"]);
于 2013-05-20T15:43:54.657 に答える