2

我正在处理来自 Foursquare API 的数据。

我想获取咖啡店的列表,并且可以正确获取(我正在使用 RestKit)......但是一旦我得到了那个列表,我最终需要过滤掉任何“星巴克”的咖啡店.

所以现在我只知道如何拉入所有咖啡店,但我不知道如何在将数据提供到应用程序表视图之前解析这些数据,这样就不会列出星巴克咖啡店。

任何想法我怎么能做到这一点?如果您需要我发布的任何可能有帮助的代码片段,请告诉我。谢谢!

编辑

API 的正常响应类型为:

"venue": [{
    "name": "ABC Coffee Shop", {

所以我需要采用“名称”并过滤掉任何名称"Starbucks"

4

2 回答 2

3

如果 FourSquare 不允许您对请求应用过滤器来过滤名称“Starbucks”,那么我将执行以下操作。

我首先将响应反序列化为一个 JSON 对象,在本例中将是一个字典。

NSError *error = nil;
NSDictionary *responseDict = [[NSJSONSerialization JSONObjectWithData:foursquareResponse options:0 error: &error];
NSArray *starbucks = nil;
if (!error) {
    NSArray *coffeeShops = responseDict[@"venue"];
    starbucks = [coffeeShops filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"name = 'Starbucks'"]];
} else {
    // handle the error
}

NSLog(@"Starbucks: %@", starbucks");

我没有测试这段代码,但我认为它应该能让你上路。

于 2013-04-17T23:32:14.233 回答
1

对我来说看起来像 JSON,你可以使用内置的 JSON 解析器,NSJSONSerialization类。这是我构建的一个方法,它接受一个NSDataJSON 参数,反序列化它并返回一个字典。

- (NSMutableDictionary *)deserialize: (NSData *)data {

    return [[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error: nil] mutableCopy];
}

我不知道 Foursquare 响应的结构,所以您可能想查看NSLog()返回的字典,看看现在如何引用它。

于 2013-04-17T23:27:04.987 回答