【发布时间】:2019-03-05 08:23:43
【问题描述】:
TL;DR
是否可以扩展私有的和在扩展中定义的类,即NewsParser?
相关文件
swift2 - Extension of a nested type in Swift - Stack Overflow 谈到类似的情况,除了嵌套类类型不是私有的。
我有一堂课NewsPost:
class NewsPost {
var title: String?
var author: String?
var mainContent: NSAttributedString?
var data: Data? {
didSet {
let newsParser = NewsParser(delegate: self)
newsParser.parse()
}
}
// Init methods and other stuff...
}
还有一个NewsPost拥有的类NewsParser:(在另一个Swift文件中,但这似乎不是一个因素,因为SR-631)
private extension NewsPost {
private class NewsParser {
weak var delegate: NewsPost?
// Other properties for parsing...
init(delegate: NewsPost) {
self.delegate = delegate
}
func parse() {
// parse the delegate.data and update properties in delegate (NewsPost instance)
}
// Other methods to be called for parsing...
}
}
但似乎无法扩展NewsPost.NewsParser。
以下尝试无效:
尝试 1
错误:由于“fileprivate”保护级别,“NewsParser”无法访问
private extension NewsPost { // Notice the "private" prefix
class NewsParser {
weak var delegate: NewsPost?
//Other properties for parsing...
init(delegate: NewsPost) {
self.delegate = delegate
}
func parse() {
// parse the delegate.data and update properties in delegate (NewsPost instance)
}
// Other methods to be called for parsing...
}
}
NewsPost 定义中发生错误:
var data: Data? {
didSet {
let newsParser = NewsParser(delegate: self) // error happens here
newsParser.parse()
}
}
尝试 2
错误:“NewsParser”由于“私人”保护级别而无法访问
extension NewsPost {
private class NewsParser { // Notice the "private" prefix
var delegate: NewsPost
// Other properties for parsing...
func parse() {
// parse the delegate.data and update properties in delegate (NewsPost instance)
}
// Other methods to be called for parsing...
}
}
extension NewsPost.NewsParser { // error happens here
// extensions here...
// many kinds of errors happen here
}
是否可以扩展私有和扩展中定义的类,即NewsParser?
【问题讨论】:
标签: swift