0

itemDict という NSDictionary があり、印刷時に

NSLog(@"itemDictValues:%@",itemDict);

出力は次の形式です。

itemDictValues:
GTLPlusPerson 0xab821e0: 
{etag:""LTv_6IJISeUQGTVXLjMeOtebkoM/eup2crXcelmpMFKesXWlGkJjCiE"" kind:"plus#person" id:"1145282979128841" objectType:"person" displayName:"FirstName LastName" image:{url} url:"https://plus.google.com/1145282979128841"}

これから、iddisplayName、およびurlに対応する値を、この形式で NSString 変数に抽出する必要があります

profileId=1145282979128841;

Name=FirstName LastName;

Profilepic=https://plus.google.com/1145282979128841;

どうすればいいですか?

4

5 に答える 5

0

NSDictionary の場合

     NSString *profileId = itemDict[@"id"]
     NSString *name = itemDict[@"displayName"]
     NSString *profilePic = itemDict[@"image"][@"url"]

GTLPlusPerson オブジェクトの場合、objective-c ドット構文でプロパティにアクセスします

     NSString *profileId = itemDict.id;
     NSString *name = itemDict.displayName;
     NSString *profilePic = itemDict.url;

ログから判断すると、それは GTLPlusPerson オブジェクトであり、NSDictionary ではないようです

于 2013-10-08T16:55:17.287 に答える
0

最も簡単な方法は、Google が提供するコードを使用することです。

    if ([[GPPSignIn sharedInstance] authentication]) {
        // The user is signed in.

        GTLQueryPlus *query = [GTLQueryPlus queryForPeopleGetWithUserId:@"me"];


        GTLServicePlus* plusService = [[GTLServicePlus alloc] init];
            plusService.retryEnabled = YES;

        //auth = GTMOAuth2Authentication object from login          

        [plusService setAuthorizer:auth];

        [plusService executeQuery:query
                completionHandler:^(GTLServiceTicket *ticket,
                                    GTLPlusPerson *person,
                                    NSError *error) {
                    if (error) {
                        GTMLoggerError(@"Error: %@", error);
                    } else {
                        // Retrieve the display name and "about me" text
                        NSString *description = [NSString stringWithFormat:@"%@\n%@", person.displayName, person.aboutMe];
                        NSString *imageURL = person.image.url;

                    }
                }];



    } else {
        //user is logged out
    }
}
于 2015-07-07T14:06:51.120 に答える
0

Dictionary を解析するだけで、必要な情報を取得できます。

NSString *profileId = [itemDict objectForKey:@"id"];
NSString *displayName = [itemDict objectForKey:@"displayName"];

そのイメージ、それ自体が辞書に載っていると思います。そして、その辞書の内容を指定していないので、次のことを行う必要があると思います。

NSDictionary *imageDict = [itemDict objectForKey:@"image"];
NSURL *imageURL = [imageDict objectForKey:@"url"];

次に、UIImage の取得は非常に簡単になります。

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:imageURL];
NSData *imageData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
UIImage *image = [[UIImage alloc] initWithData:imageData];

バックグラウンドで発生し、アプリの機能を妨げないため、sendAsynchronousRequest メソッドを選択する必要があります。

于 2013-10-08T17:56:39.847 に答える
0
NSArray* peopleList = peopleFeed.items;
NSLog(@"peopleList %@ ",peopleList.description);
for (NSArray *dict in peopleFeed.items) {
                    NSString *peopleStrID=(NSString*)((GTLPlusPerson*)dict).identifier;
                    NSLog(@"peopleStrID %@",peopleStrID);
                    NSString *peopleName = (NSString*)((GTLPlusPerson*)dict).displayName;
                    NSString *peoplePic = (NSString*)((GTLPlusPerson*)dict).image.url;
                }
于 2015-04-27T12:30:10.680 に答える