我使用FQL来获取最近的5个地方的名称,如下所示:
- (void)facebookPlaces {
NSString *query = @"SELECT name FROM place WHERE distance(latitude, longitude, \"39.750655\", \"-104.999127\") < 500 ORDER BY distance(latitude, longitude, \"23.750655\", \"-180.999127\") limit 5";
// Set up the query parameter
NSDictionary *queryParam = @{ @"q": query };
// Make the API request that uses FQL
[FBRequestConnection startWithGraphPath:@"/fql"
parameters:queryParam
HTTPMethod:@"GET"
completionHandler:^(FBRequestConnection *connection,
id result,
NSError *error) {
if (error) {
NSLog(@"Error: %@", [error localizedDescription]);
} else {
NSLog(@"Result: %@", result);
// Store the result in an NSData object
NSData *nameData = [result data];
NSLog(@"Test data reads: %@", nameData);
}
}];
结果整齐地返回:
Result: {
data = (
{
name = "T|aco";
},
{
name = "ChoLon Bistro";
},
{
name = "Illegal Pete's Lodo";
}, etc...
我将数据存储在NSData对象中,它的读取方式完全相同。我想以一种方式解析结果,我可以用一种简单的方式获取所有名称,并将它们打印到日志中。我能想到的唯一方法是手动解析NSData或结果,但我不知道如何只使用name =
旁边的引号中的内容。我对FQL和objective-c都很陌生,有谁知道我该怎么做?
当我研究这个时,我看到了一个很棒的JSON示例,它将name =
旁边的所有内容都存储在一个数组中。虽然它适用于Android,但我无法弄清楚如何让它在iOS中运行。理想情况下,这就是我想要做的事情。
答案 0 :(得分:1)
结果被解析为NSDictionary
的JSON对象。您可以告诉,因为结果对象以{}
开头。在data
键内,您会看到一个数组(用()
表示)。
所以要获得一系列名称,你可以这样做:
NSMutableArray *names = [NSMutableArray array];
for (NSDictionary *item in result[@"data"]) {
[names addObject:item[@"name"]];
}
这就是你要追求的吗?