Ios obj-c类中未知的swift属性
我在swift类中声明了一个属性Ios obj-c类中未知的swift属性,ios,swift,Ios,Swift,我在swift类中声明了一个属性var坐标:CLLocationCoordinate2D? 但是我在obj-c类中找不到这个属性。我试图在类之前添加@obj,但它不起作用。问题是您声明了一个可选的属性(?),这是一个纯Swift构造。除非特别桥接,否则目标C类无法访问它们,例如。您无法访问实例变量,因为坐标:CLLocationCoordinate2D未与目标C桥接。而不是声明CLLocationCoordinate2D,您可以将纬度和经度声明为NSNumber类型,然后使用它们生成二维坐标 v
var坐标:CLLocationCoordinate2D?
但是我在obj-c类中找不到这个属性。我试图在类之前添加
@obj
,但它不起作用。问题是您声明了一个可选的属性(?
),这是一个纯Swift
构造。除非特别桥接,否则目标C
类无法访问它们,例如。您无法访问实例变量,因为坐标:CLLocationCoordinate2D未与目标C桥接。而不是声明CLLocationCoordinate2D,您可以将纬度和经度声明为NSNumber类型,然后使用它们生成二维坐标
var lat: NSNumber?
var lon: NSNumber?
然后在Objc类中指定值,如下所示:
switObject.lat = @3;
switObject.lon = @5;
有关详细信息,请检查此链接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`
}
}
如果您将其设置为非可选,它将起作用。(CLLocationCoordinate2D
)