2017-04-25 51 views
0

The question is the same as this one將私有財產公開/使用Swift類別只讀一個可寫的?

但我需要Swift的解決方案。一般來說,如果Swift是可能的?當然,我的意思是沒有創建Objective C文件並將其導入到swift代碼中的解決方案

+0

只需在擴展中創建一個公共屬性,其中的getter/setter將該呼叫轉發給私有的。你的問題是什麼? – Alexander

+0

@Alexander的問題是你不能訪問擴展中的私有變量 - 這是行不通的 –

+0

@GrzegorzKrukowski在這個提議被實現之前,需要創建'fileprivate':https://github.com/apple/swift -evolution/blob/master/proposals/0169-improve-interaction-between-private-declarations-and-extensions.md – Alexander

回答

2

否 - 在Swift中是不可能的 - 至少不會在當前的Swift 3版本中。

如果變量被定義爲「private」,那麼甚至不能通過擴展來訪問它,甚至不能通過子類來訪問它。

如果您可以將此「私有」變量設置爲「fileprivate」或「internal」 - 它將打開通過公共方法公開它們的可能性。

這裏是蘋果公司在一個文檔: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html

如果您正在使用斯威夫特2個工作 - 你應該能夠使公共職能將從主類返回私有變量。