我可以在CLCircularRegion中设置值吗?

时间:2018-02-22 08:54:57

标签: swift swift4 clcircularregion

我正在使用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 ??

中设置值(网址)吗?

2 个答案:

答案 0 :(得分:1)

Swift不是Javascript - 您无法在现有类或结构上创建新属性,并且它继承的CLCircularRegionCLRegion都没有属性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。