在 Xcode beta 3 中,以下代码不再有效:
func keyboardWasShown (notification: NSNotification)
{
var info = notification.userInfo
keyboardSize = info.objectForKey(UIKeyboardFrameBeginUserInfoKey).CGRectValue().size
}
在指令中:
keyboardSize = info.objectForKey(UIKeyboardFrameBeginUserInfoKey).CGRectValue().size
XCode 返回错误 [NSObject : AnyObject] 没有名为 objectForKey 的成员。
所以我把代码改成了这样:
func keyboardWasShown (notification: NSNotification)
{
var info = notification.userInfo
keyboardSize = info[UIKeyboardFrameBeginUserInfoKey].CGRectValue().size
}
但 XCode 返回错误“String is not a subtype f DictionaryIndex”
从 Xcode 6 Beta 3 开始,NSDictionary*
现在从 Objective-C API 导入为[NSObject : AnyObject]
(此更改记录在发行说明中)。
所以你可以使用以下方式访问字典值info[UIKeyboardFrameBeginUserInfoKey]
。
这给出了一个AnyObject
你必须投射到哪个NSValue
, 以便CGRectValue()
可以应用:
var info = notification.userInfo
let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as NSValue).CGRectValue().size
错误信息
“String”不是“DictionaryIndex”的子类型
相当具有误导性,您第二次尝试的问题只是缺少演员阵容。
Xcode 6.3 更新: notification.userInfo
is an optional现在字典必须解开,例如具有可选的绑定。
还有强制施法操作员as
已更名为as!
:
if let info = notification.userInfo {
let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue().size
} else {
// no user info
}
我们可以强制解开字典值,因为它是有记录的成为一个NSValue
of a CGRect
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)