obj-c类中未知的swift属性

时间:2016-03-14 06:46:02

标签: ios swift

我在swift类中声明了一个属性var coordinate:CLLocationCoordinate2D? 但我在obj-c类中找不到这个属性。我试图在课前添加@obj,但它不起作用。

3 个答案:

答案 0 :(得分:0)

问题是您已声明optional属性(?),这是一个纯Swift构造。 Objective C类除非特别桥接,否则无法访问它们,例如String -> NSString

答案 1 :(得分:0)

您无法访问实例变量,因为坐标:CLLocationCoordinate2D未与Objective C桥接。您可以将纬度和经度声明为NSNumber类型,然后使用它们生成2D坐标,而不是声明CLLocationCoordinate2D。

var lat: NSNumber?
var lon: NSNumber?

然后在Objc Class中指定值,如下所示:

switObject.lat = @3;
switObject.lon = @5;

有关详细信息,请查看此链接Cannot access property of Swift type from Objective-C

答案 2 :(得分:0)

Obj-C不支持可选结构。但是如果你把它变成非可选的,它会编译:

import CoreLocation

class Class : NSObject
{
    dynamic var coordinate:CLLocationCoordinate2D // no `?`: non-optional
    override init()
    {
        coordinate = CLLocationCoordinate2D() // it's not optional, so you must initialize `coordinate`
    }
}