我有一个plist包含一个包含三个元素的数组,所有这些元素都是字典。这些词典每个包含四个项目(纬度,经度,标题,副标题)。我想循环遍历每个元素并获得纬度和经度(两者都是字典的属性)。
使用以下代码。
- (void)loadAnnotations{
//retrieve path of plist file and populate relevant types with its information
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Places1" ofType:@"plist"];
branchList = [[NSArray alloc] initWithContentsOfFile:plistPath];
NSLog(@"hi inside method",branchList.lastObject);
self.branchList =[NSMutableArray array];
//code ok until this
for (NSDictionary *key in branchList)
{ NSLog(@"hi in loop");
PlaceFinderAnnotation *placeAnnotations = [[PlaceFinderAnnotation alloc] init];
//loop through annotations array, creating parking annotations filled with the information found in the plist
CLLocationDegrees latitude = [[key valueForKey:@"latitude"]floatValue];
CLLocationDegrees longitude = [[key valueForKey:@"longitude"]floatValue];
placeAnnotations.coordinate = CLLocationCoordinate2DMake(latitude, longitude);
[self.branchList addObject:placeAnnotations];
[placeAnnotations release]; placeAnnotations= nil;
objectForKey:@"subtitle"]];
}
}
问题是它没有进入循环。意思是它不会打印出日志命令“hi在looppp中”。
答案 0 :(得分:2)
让我们假设此代码成功(我们必须假设您似乎没有检查以确保)。我们也假设(因为你没有说)“branchList”是当前类中的一个实例变量:
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Places1" ofType:@"plist"];
branchList = [[NSArray alloc] initWithContentsOfFile:plistPath];
这有希望留给你一个阵列。当然,您可以通过...检查以确保它为您留下一个数组(if (branchList)...
)来消除“希望”。然后,由于“branchList”似乎是一个实例变量,你可以立即将它替换为空数组(使用访问器而不是像上面那样直接设置):
self.branchList =[NSMutableArray array];
...所以你尝试迭代一个空循环(所以永远不会执行NSLog()
语句)。
答案 1 :(得分:0)
self.branchList =[NSMutableArray array];
创建一个空数组,这就是要求for语句循环的内容。
删除该声明。
也许这就是你想要的:
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Places1" ofType:@"plist"];
self.branchList = [NSArray arrayWithContentsOfFile:plistPath];
NSLog(@"hi inside method",branchList.lastObject);
for (NSDictionary *key in self.branchList) {
NSLog(@"hi inside loopppp");
答案 2 :(得分:-1)
if([branchlist count]){
for (NSDictionary *key in self.branchList) {
NSLog(@"Key item in branchlist %@",key);
}
}else{
NSLog(@"There is no items in branchlist");
}