我在swift类中声明了一个属性var coordinate:CLLocationCoordinate2D?
但我在obj-c类中找不到这个属性。我试图在课前添加@obj
,但它不起作用。
答案 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`
}
}