【问题标题】:const unsigned char ptr (UnsafePointer<CUnsignedChar>) to Stringconst unsigned char ptr (UnsafePointer<CUnsignedChar>) 到字符串
【发布时间】:2014-06-11 18:23:36
【问题描述】:

我正在尝试直接在 Swift 中使用 libxml。现在我想得到一个 const unsigned char * 到一个字符串,但我不知道怎么做。有什么想法吗?

在 Objective-C 中它适用于

[NSString stringWithUTF8String:(const char*)nodePointer->name];

【问题讨论】:

  • 您可以使用该方法,然后简单地将其分配给 Swift String,它将为您转换!
  • 我已经尝试过let str: String = NSString(UTF8String: nodePointer.memory.name)。没用!
  • 试试let str: String = NSString(UTF8String: nodePointer.memory.name) as String
  • 我在使用 sqlite3 时遇到了这个问题,其中一些字符串被定义为 const unsigned char *,最后不得不破坏标题以在标题中将它们更改为 const char*。看看是否有人有更好的解决方案很有趣。
  • @JackWu:也不行。

标签: swift


【解决方案1】:

你试过了吗:

let cString = CString(nodePointer.name)
let string = String.fromCString(cString)

当我处理一个返回为UnsafePointer&lt;CUnsignedChar&gt; 的字符串值时,这对我有用,而其他任何方法都不起作用。

【讨论】:

  • 非常感谢!!!!但是“->”在 Swift 中不再起作用了。必要的是nodePointer.memory.name。也许你可以在你的答案中改变它。太棒了!
  • 知道如何从 Swift String 回到 CConstPointer 吗? ;)
  • 我的错 - 我只是在看你的代码,应该注意到我输入了错误的东西:)
  • 关于从 Swift String 转换为 CConstPointer,你试过吗,str.bridgeToObjective().cString() wehre str 是 Swift 字符串?
  • 不起作用('CString is not convertible to CConstPointer'):(你的答案的一件事:正确的方法是nodePointer.memory.name。如果我理解正确,你需要“记忆”访问指针“后面”的值
猜你喜欢
  • 2011-02-04
  • 2010-09-21
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多