【问题标题】:How to get a value from NSValue in Swift?如何在 Swift 中从 NSValue 获取值?
【发布时间】:2014-08-02 04:47:59
【问题描述】:

这是我目前尝试过的

func onKeyboardRaise(notification: NSNotification) {
    var notificationData = notification.userInfo
    var duration = notificationData[UIKeyboardAnimationDurationUserInfoKey] as NSNumber
    var frame = notificationData[UIKeyboardFrameBeginUserInfoKey]! as NSValue
    var frameValue :UnsafePointer<(CGRect)> = nil;
    frame.getValue(frameValue)
}

但我似乎总是在frame.getValue(frameValue) 崩溃。

这有点令人困惑,因为UIKeyboardFrameBeginUserInfoKey 的文档说它返回一个CGRect 对象,但是当我在控制台中记录frame 时,它会显示类似NSRect {{x, y}, {w, h}} 的内容。

【问题讨论】:

标签: ios swift nsvalue


【解决方案1】:

getValue() 必须使用指向(初始化的)变量的指针调用 大小合适:

var frameValue = CGRect(x: 0, y: 0, width: 0, height: 0)
frame.getValue(&frameValue)

但使用方便的方法更简单:

let frameValue = frame.CGRectValue() // Swift 1, 2
let frameValue = frame.cgRectValue() // Swift 3

【讨论】:

  • 这太棒了,谢谢先生!一开始我遇到了麻烦,因为如果您开始输入“CGRec..”,xCode 不会自动完成,所以我认为该方法不存在。 xCode 测试版中的另一个错误!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多