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? 在那个时候你将不得不拆开它