sha*_*kov 3 frameworks objective-c swift
我正在使用我的swift代码中的libxml2框架,并且不确定访问属性的正确语法是什么.
在Objective-C中,您可以使用以下命令访问该属性:
currentNode->name
Run Code Online (Sandbox Code Playgroud)
但是当尝试使用与Swift相同的语法时,我得到了以下错误:
"支撑语句块是未使用的闭包"
我猜这是因为" - >"已被保留.
我也尝试过:
currentNode.name
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
"'xmlNodePtr'没有名为'name'的成员"
是否可以访问Swift中的C属性?
这样做的方法是使用类型的memory变量UnsafePointer.
但是,为了加快速度,我首选的方法是定义一个自定义运算符来取消引用UnsafePointer类型:
operator postfix & { }
@postfix func &<T>(lhs: UnsafePointer<T>) -> T {
return lhs.memory;
}
Run Code Online (Sandbox Code Playgroud)
完成后,您可以执行以下操作:
let doc = xmlReadDoc(nil, "my-url", "UTF-8", 0);
let root = xmlDocGetRootElement(doc);
var currentChild = root&.children;
while (currentChild != nil) {
var str = String.fromCString(UnsafePointer<CChar>(currentChild&.name));
println("Child name: \(str)");
currentChild = currentChild&.next;
}
Run Code Online (Sandbox Code Playgroud)
如果你想允许链接,你甚至可以使结果返回可为空.
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |