我是 Objective-C 的新手并尝试使用这些语法。
+ (MKCoordinateSpan)MKCoordinateSpan:(id)json
{
json = [self NSDictionary:json];
return (MKCoordinateSpan){
[self CLLocationDegrees:json[@"latitudeDelta"]],
[self CLLocationDegrees:json[@"longitudeDelta"]]
};
}
根据我的猜测,MKCoordinateSpan
是一个类。并且{}
语法尝试创建一个对象并将这些对象强制转换为实例MKCoordinateSpan
。这是对的吗?或者尝试使用两个值latitudeDelta和longitudeDelta
MKCoordinateSpan
(MKCoordinateSpan){
[self CLLocationDegrees:json[@"latitudeDelta"]],
[self CLLocationDegrees:json[@"longitudeDelta"]]
};
答案 0 :(得分:1)
MKCoordinateSpan
是struct
,而非班级。它被定义为:
typedef struct {
CLLocationDegrees latitudeDelta;
CLLocationDegrees longitudeDelta;
} MKCoordinateSpan;
因此,您问题中的代码是创建此struct
的实例。
实现相同目标的更为习惯的方法是使用MKCoordinateSpanMake
:
+ (MKCoordinateSpan)MKCoordinateSpan:(id)json {
json = [self NSDictionary:json];
return MKCoordinateSpanMake([self CLLocationDegrees:json[@"latitudeDelta"]],
[self CLLocationDegrees:json[@"longitudeDelta"]]);
}
将来,按 shift + 命令 + O (字母“oh”),然后输入MKCoordinateSpan
,你可以直接跳到类型的定义并消除任何歧义。或 alt - 点击代码中的MKCoordinateSpan
类型,您可以看到快速帮助: