2016-12-06 30 views
0

我有一個用Swift編寫的類(模型),我想從Objective C類訪問它,但我不能。訪問從數組中的swift類的屬性

爲了解釋更多,我有一個數組正在追加使用Swift編寫的模型中的字典。

模式是這樣的:

@objc class GoalPreviewModel: NSObject { 
var id : Int? 
var name : String? 

init(dictionary: NSDictionary) { 
    self.id = dictionary["id"] as? Int 
    self.name = dictionary["name"] as? String 
} 

} 

這本詞典是通過這種模式填補很好,一切工作正常,只要我從寫在斯威夫特類訪問它。當我嘗試訪問該字典數組並訪問屬性時,會發生此問題。 當我想訪問名稱時,下面的語句工作正常。

[_nameLabel setText:[(NSString*) [[AppState sharedInstance].arrayOfDicts objectAtIndex:idx] valueForKey:@"name"]]; 

但是當我試圖訪問valueForKey:@「ID」它給了我這個樣子 錯誤「這個類不是鍵值編碼兼容的密鑰ID。」

有人可以幫我解決這個問題嗎?

在此先感謝!

+1

出於好奇,如果你的屬性重命名爲'id'以外的東西它工作嗎? – sbooth

+0

@sbooth我試過了,但它不起作用 – Srdjan

+0

你有沒有[看過這個](http://stackoverflow.com/questions/24221407/can-a-swift-optional-int-int-be-exposed-to-jective -C-通過橋接)? – paulvs

回答

0

你應該讓你的屬性(ID和名稱)是公共的,並嘗試沒有鍵值編碼訪問它這樣:

[_nameLabel setText:(NSString*)[[AppState sharedInstance].arrayOfDicts 
         objectAtIndex:idx]name]]; 
+0

感謝您的幫助,答案就在這[link](http://stackoverflow.com/questions/24221407/can-a-swift-optional-int-int-be-exposed-to-objective-c-via-bridging ) – Srdjan