Swift:如何从NSScanner的AutoreleasingUnsafePointer <NSString?>中获取值?
我不知道如何使用AutoreleasingUnsafePointer。 我有以下代码:
var myString: AutoreleasingUnsafePointer<NSString?> myScanner.scanUpToCharactersFromSet(NSCharacterSet.newlineCharacterSet(), intoString: myString)
现在,我应该怎么做从'myString'的string? 我知道它可以是零,但我不知道如何获得string值的情况下,它不是零。 而Swift展开技巧只适用于Optionaltypes。
谢谢!
如果scanUpToCharactersFromSet
的第二个参数被声明为自动释放不安全的指针,即AutoreleasingUnsafePointer<NSString?>
那么你应该能够在不明确指针的情况下调用你的函数。 Swift让你在NSString?
上使用&
运算符NSString?
variables来产生一个autoreleasing不安全的指针,像这样:
var str : NSString? = nil myScanner.scanUpToCharactersFromSet(NSCharacterSet.newlineCharacterSet(), intoString:&str)
这会给你str
作为一个“正常的”可选的NSString
,你可以使用常规的unwrapping运算符来展开。
从AutoreleasingUnsafePointer
声明:
struct AutoreleasingUnsafePointer<T> : Equatable, LogicValue { let value: Builtin.RawPointer init(_ value: Builtin.RawPointer) func getLogicValue() -> Bool /// Access the underlying raw memory, getting and /// setting values. var memory: T }
你应该可以通过访问storingString.memory
来得到你的string。
你回来应该是一个NSString?
在那个时候你将不得不拆开它