'init'不可用:使用'withMemoryRebound(to:capacity:_)'临时查看内存作为另一种布局兼容类型

时间:2016-09-18 02:42:07

标签: ios swift parsing swift3

刚刚更新到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:_)'来   暂时将内存视为另一种与布局兼容的类型。

非常感谢您的帮助!

0 个答案:

没有答案