0

如何读取包含此格式对象的数组:

Second pair: {
latitude = "26.499023";
longitude = "42.326061";
}

??

编辑:

NO..this is the way I come up with that...   

NSArray *MaparrayLongitude = [dataMap objectForKey:@"longitude"];
NSArray *MaparrayLatitude = [dataMap objectForKey:@"latitude"];

if (MaparrayLongitude.count != MaparrayLatitude.count) {
    //Error: Unequal number of longitude/latitude values
} else {
    NSMutableArray *pairs = [NSMutableArray array];
    for (int i = 0; i < MaparrayLongitude.count; i++) {
        NSDictionary *pair = [NSDictionary dictionaryWithObjectsAndKeys:
                              [MaparrayLongitude objectAtIndex:i], @"longitude",
                              [MaparrayLatitude objectAtIndex:i], @"latitude", nil];
        [pairs addObject:pair];
4

2 回答 2

3

我怀疑您正在寻找的答案称为 NSDictionary。我来自 PHP,如果它是数字索引或字符串键控,我们称它为数组;在 Objective-C 中,有 3 种基本类型的集合:

NSArray - 作为索引的有序自然整数

NSSet - 无序集合,单一成员

NSDictionary - 键入几种对象之一,通常是字符串。

这是苹果的文档

编辑:作为参考,这是您的代码最终可能的样子:

double myLat = [[secondPair objectForKey:@"latitude"] doubleValue];

编辑(在您编辑之后):也许它是快速枚举,结合您寻求的字典访问:

for (NSDictionary *coordinate in pairs) {
  // lat = [coordinate objectForKey@"latitude"];
}
于 2012-07-03T23:20:14.023 回答
1

嗯,这是一个简单的数据结构,有两个浮点值,所以我更喜欢

[NSValue valueWithCGPoint:CGPointMake(26.499023, 42.326061)];

并将其存储到数组中。为了获得价值,您可以这样做:

CGPoint coordinate = [[array objectAtIndex:index] CGPointValue];

您还可以定义 CGPoint 的名称,例如

typedef CGPoint YourCustomNameForPoint;

然后像使用它

YourCustomNameForPoint coordinate = [[array objectAtIndex:index] CGPointValue];

它不会导致混乱。;)

于 2012-07-03T23:28:21.980 回答