2017-04-25 53 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个工作 - 你应该能够使公共职能将从主类返回私有变量。