我有一个plist,它包含节点的每个字典信息。 每个节点都有经度,纬度和与其他节点的连接。 这是一个小小的plist。
<array>
<dict>
<key>connections</key>
<array>
<integer>1</integer>
<integer>3792</integer>
</array>
<key>latitude</key>
<real>45.43876</real>
<key>longitude</key>
<real>12.3213</real>
</dict>
<dict>
<key>connections</key>
<array>
<integer>0</integer>
<integer>3793</integer>
</array>
<key>latitude</key>
<real>45.43887</real>
<key>longitude</key>
<real>12.32122</real>
</dict>
此外,我有一个名为IGNode的类来存储信息,请参阅此处的.m实现。 我假设这里不需要标题。
#import <Foundation/Foundation.h>
@interface IGNode : NSObject
@property double lon;
@property double lat;
@property(nonatomic,strong) NSMutableArray *links;
@end
到目前为止,我已经加载了纬度和经度。 但是我不知道如何从plist中获取连接数组。 我在stackoverflow上查看了很多示例,但我无法将它们转换为我必须做的事情。
这是我到目前为止所做的。
for (int i=0; i<plistData.count; i++) {
NSDictionary *nodeDict = plistData[i];
IGNode *node = [self.nodes objectAtIndex:i];
node.lon = [[nodeDict valueForKey:@"longitude"] doubleValue];
node.lat = [[nodeDict valueForKey:@"latitude"] doubleValue];
// handle connections
// ?
}
如何在nodes.links中存储连接数组?
答案 0 :(得分:1)
你试过这个......
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Configs" ofType:@"plist"];
NSArray *tmpDicts = [[NSArray alloc] initWithContentsOfFile:plistPath];
然后,您可以枚举tmpDicts数组并从每个数据集中提取连接数组。
IGNode *node;
for (NSDictionary *dict in tmpDicts)
{
node = [[IGNode alloc]init];
node.lon = [[dict valueForKey:@"longitude"] doubleValue];
node.lat = [[dict valueForKey:@"latitude"] doubleValue];
node.links = [[dict valueForKey:@"connections"]mutableCopy];
// Do something with the node (like add it to an array?)
}
答案 1 :(得分:0)
尝试
for (NSDictionary *nodeDict in plistData) {
IGNode *node = [self.nodes objectAtIndex:i];
node.lon = [nodeDict[@"longitude"] doubleValue];
node.lat = [nodeDict[@"latitude"] doubleValue];
node.links = [nodeDict[@"connections"] mutableCopy];
}