0

在为 iPad 开发时,我创建了一个名为 Coordinates.geojson 的文件。我想从一个名为 JsonDecoder.m 的类文件中访问它

这是 JsonDecoder.m

@implementation JsonDecoder



- (id)initWithJson
{
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Coordinates" ofType:@"geojson"];
    NSData *data = [NSData dataWithContentsOfFile:filePath];
    NSError *error;
    _json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
    return self;
}

- (NSArray*) getCoordinatesFromShelf:(NSString *) bookShelfName
{
    NSArray *coordinates = [[[_json objectForKey:@"shelf1"] objectForKey:@"coordinates"]objectAtIndex:1];
    for(id i in coordinates)
        NSLog(@"%@",i);
    return coordinates;
}
@end

还有我的 Coordinates.geojson:

{
    "shelf1": {
        "name": "six.png",
        "coordinates": [
                        [
                         14,
                         25,
                         329,
                         138
                         ],
                        [
                         14,
                         185,
                         329,
                         138
                         ],
                        [
                         14,
                         344,
                         158,
                         138
                         ],
                        [
                         185,
                         344,
                         158,
                         138
                         ],
                        [
                         14,
                         94,
                         158,
                         138
                         ],
                        [
                         185,
                         500,
                         158,
                         138
                         ]
                        ]
    }
}

如何从类文件中检索这些值?

谢谢!

4

2 回答 2

2

在 iOS >= 5 中,您可以在没有外部库的情况下解析它

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Coordinates" ofType:@"geojson"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSError *error;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

但文件的内容不是有效的 JSON 字符串。

如果可能的话,将其更改为:

{
    "shelf1": {
        "name": "six.png",
        "coordinates": [
            [
                14,
                25,
                329,
                138
            ],
            [
                14,
                185,
                329,
                138
            ],
            [
                14,
                344,
                158,
                138
            ],
            [
                185,
                344,
                158,
                138
            ],
            [
                14,
                94,
                158,
                138
            ],
            [
                185,
                500,
                158,
                138
            ]
        ]
    }
}

然后你可以通过以下方式访问它:

NSDictionary *shelf1 = [json objectForKey:@"shelf1"];

//OR

NSArray *coordinates = [[json objectForKey:@"shelf1"] objectForKey:@"coordinates"];
于 2013-04-25T19:31:34.607 回答
0

解决了。

以上工作完美

我忘记为 geojson 文件为我的项目设置目标成员资格。

为此,请标记您的 jsonfile,单击文件检查器并在“目标成员资格”中选中您项目的复选框

谢谢。

于 2013-04-26T08:22:14.723 回答