刚刚更新到Xcode 8和Swift 3时出现了这个问题。在我选择将Swift 2代码转换为Swift 3之后,这个问题出现在我之前导入的解析库中(Kanna)。
internal init(docPtr: xmlDocPtr, object: xmlXPathObject) {
switch object.type {
case XPATH_NODESET:
let nodeSet = object.nodesetval
if nodeSet == nil || nodeSet?.pointee.nodeNr == 0 || nodeSet?.pointee.nodeTab == nil {
self = .none
return
}
var nodes : [XMLElement] = []
let size = Int((nodeSet?.pointee.nodeNr)!)
for i in 0 ..< size {
let node: xmlNodePtr = nodeSet!.pointee.nodeTab[i]!
let htmlNode = libxmlHTMLNode(docPtr: docPtr, node: node)
nodes.append(htmlNode)
}
self = .NodeSet(nodeset: XMLNodeSet(nodes: nodes))
return
case XPATH_BOOLEAN:
self = .Bool(bool: object.boolval != 0)
return
case XPATH_NUMBER:
self = .Number(num: object.floatval)
case XPATH_STRING:
self = .String(text: Swift.String(cString: UnsafePointer<CChar>(object.stringval)) ?? "")
return
default:
self = .none
return
}
}
此代码是Kanna.swift文件中扩展名内的内部init。错误发生在这里:
self = .String(text: Swift.String(cString: UnsafePointer<CChar>(object.stringval)) ?? "")
错误消息是:
'init'不可用:使用'withMemoryRebound(to:capacity:_)'来 暂时将内存视为另一种与布局兼容的类型。
非常感谢您的帮助!