1

マルチクエリの結果からデータを抽出できるようにしたいと考えています。

このコードを使用してマルチクエリを作成しています:

NSString *query =
@"{"
@"'friends':'SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 25',"
@"'friendinfo':'SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid2 FROM #friends)',"
@"}";

NSDictionary *queryParam = @{ @"q": query };

[FBRequestConnection startWithGraphPath:@"/fql"
                             parameters:queryParam
                             HTTPMethod:@"GET"
                      completionHandler:^(FBRequestConnection *connection,
                                          id result,
                                          NSError *error) {
                          if (error) {
                              NSLog(@"Error: %@", [error localizedDescription]);
                          } else {
                              NSLog(@"Result: %@", result);
                          }
                      }];

そして、結果をコマンド ラインに出力すると、見たいデータがすべて表示されます。

Result: {
data =     (
            {
        "fql_result_set" =             (
                            {
                uid2 = 12345;
            },
                            {
                uid2 = 12345;
            }
        );
        name = friends;
    },
            {
        "fql_result_set" =             (
                            {
                name = "gg";
                "pic_big" = "https://fbcdn-profile-a.akamaihd.net/gg";
                sex = gg;
                uid = 12345;
            },

                            {
                name = "gg";
                "pic_big" = "https://fbcdn-profile-a.akamaihd.net/gg";
                sex = gg;
                uid = 12345;
            },
                            {
                name = "gg";
                "pic_big" = "https://fbcdn-profile-a.akamaihd.net/gg";
                sex = gg;
                uid = 12345;
            }
        );
        name = friendinfo;
    }
);
}

結果から各エントリから名前、画像のURL、性別、およびuidを抽出する方法がわかりません。配列と辞書を組み合わせて使用​​する必要があるように感じますが、方法がわかりません。助けてくれてありがとう。:)

4

1 に答える 1

0

少し遅れましたが、これは他の人が試した方法です.....

//get data into array
NSArray *data = [result objectForKey:@"data"];

//loop queries in array
for (NSArray *nextQuery in data) {

    //debug query name (use this for if statement to handle query data)       
    NSLog(@"query name - %@", [nextQuery valueForKeyPath:@"name"]);

    //get query data
    NSArray *queryData = [nextQuery valueForKeyPath:@"fql_result_set"];

    //
    NSLog(@"uid %@", [queryData valueForKeyPath:@"uid"])

}

キーパスの値とドット演算子を使用して、ネストされたオブジェクトにアクセスできます。

お役に立てれば。

于 2014-01-29T19:57:52.127 に答える