2016-03-14 68 views
0

我在swift類中聲明瞭屬性var coordinate:CLLocationCoordinate2D? 但我在obj-c類中找不到此屬性。我曾嘗試在課前添加@obj,但它不起作用。obj-c類中未知的swift屬性

+0

如果你讓它是非可選的,它會工作。 ('CLLocationCoordinate2D') – nielsbot

回答

0

您不能訪問實例變量,因爲座標:CLLocationCoordinate2D沒有與目標C橋接,而是聲明CLLocationCoordinate2D,您可以將經度和緯度聲明爲NSNumber類型,稍後使用它們進行2D座標。

var lat: NSNumber? 
var lon: NSNumber? 

,然後在Objc等級分配值波紋管:

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

欲瞭解更多信息,檢查此鏈接Cannot access property of Swift type from Objective-C

0

問題是您已聲明optional屬性(?),這是一個純粹的Swift構造。除非特別橋接,否則不能通過Objective C類訪問,例如String ->NSString

0

對象 - 不支持可選結構。但如果你使它非可選,它編譯:

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` 
    } 
}