【发布时间】:2014-10-24 16:58:21
【问题描述】:
我将 UIView 包装在 NSValue 中,这样我就可以将其用作字典中的键。
let viewValue = NSValue(nonretainedObject: myView)
我需要知道如何在使用时将 UIView 取出并正确投射:
viewValue.pointerValue()
它返回一个 UnsafeMutablePointer,我需要将它转换为 UIView
【问题讨论】:
我将 UIView 包装在 NSValue 中,这样我就可以将其用作字典中的键。
let viewValue = NSValue(nonretainedObject: myView)
我需要知道如何在使用时将 UIView 取出并正确投射:
viewValue.pointerValue()
它返回一个 UnsafeMutablePointer,我需要将它转换为 UIView
【问题讨论】:
如果您将其存储为 nonretainedObject 值,您应该以相同的方式获取它。
let viewValue = NSValue(nonretainedObject: myView)
viewValue.nonretainedObjectValue
另一个会这样配对:
let viewValue = NSValue(pointer: myView)
viewValue.pointerValue()
【讨论】:
nonretainedObjectValue 是属性而不是函数,所以应该是viewValue.nonretainedObjectValue。另请注意,它作为可选的UIView? 返回,因此最好将其包装在可选的绑定语句中:if let view = viewValue.nonretainedObjectValue { ... }
var view:UIView = UIView() let viewValue = NSValue(nonretainedObject: view) var dict = [viewValue:view] var view2:UIView = dict[NSValue(nonretainedObject: view)]! 工作正常,为什么我们需要这些东西,请告诉我。
viewValue 只是用作字典键,那么我想不出为什么你需要将UIView 拉回其中的原因。也许@bstahlhood 也在其他地方使用viewValue...