我正在使用CLCircularRegion
开发应用。
我想在CLCircularRegion
中设置值。所以我做了region.setValue(forKey:key)
,但它显示了
if CLLocationManager.locationServicesEnabled() {
for obj in pushInfoArr! {
let localLatiStr = obj["local_latit"] as! String
let localLongitStr = obj["local_longit"] as! String
let localMsg = obj["local_mesg"] as! String
let url = obj["cnnct_url"] as! String
let localLati = Double(localLatiStr)
let localLongi = Double(localLongitStr)
let center = CLLocationCoordinate2DMake(localLati!, localLongi!)
region = CLCircularRegion(center: center, radius: 1000, identifier: localMsg)
region.setValue(localMsg, forKey: "msg")
region.setValue(url, forKey: "url")
region.notifyOnEntry = true
self.locationManager.startMonitoring(for: region)
}
}
“因未捕获的异常而终止应用程序'NSUnknownKeyException', 原因:'[ setValue:forUndefinedKey:]:此类不是键值 符合编码的密钥bb“
我可以在CLCircularRegion
??
答案 0 :(得分:1)
Swift不是Javascript - 您无法在现有类或结构上创建新属性,并且它继承的CLCircularRegion
和CLRegion
都没有属性msg
或{{ 1}}。
你误解了url
的作用 - 它是基类setValue
上的一个方法,它允许通过引用它来设置类的现有属性。名称“或密钥。在Swift中不建议使用它(它是Objective-C遗产)。
您需要做的是创建一个包含您的区域和所需属性的结构或子类:
无论
NSObject
或
struct MyRegion {
var region: CLCircularRegion
var msg: String
var url: String
}
P.S。不要使用'url'作为不是class MyRegion: CLCircularRegion {
var msg: String
var url: String
init(centre: CLLocationCoordinate2D, radius: Double, identifier: String, msg: String, url: String) {
super.init(centre: centre, radius: radius, identifier: identifier)
self.msg = msg
self.url = url
}
}
的属性的名称 - 称之为'urlString'或其他类似物。我只是用它来对应你问题的术语。
答案 1 :(得分:0)
不,CLCircularRegion没有名为url的属性,因此您无法在该类型的对象上设置url。