当前位置: 首页 > 面试题库 >

[NSObject:AnyObject]?Xcode 6 beta 6中没有名为“下标”的成员错误

纪畅
2023-03-14
问题内容

当屏幕上显示键盘时,我使用以下几行代码来获取键盘的框架。我已经注册了UIKeyboardDidShowNotification通知。

func keyboardWasShown(notification: NSNotification) {
    var info = notification.userInfo
    var keyboardFrame: CGRect = info.objectForKey(UIKeyboardFrameEndUserInfoKey).CGRectValue()
}

这曾经在beta 5中起作用。我下载了最新的Xcode 6版本beta 6,此错误发生在第二行。

“ [NSObject:AnyObject]?” 没有名为“ objectForKey”的成员

经过一番谷歌搜索,我遇到了这个解决方案。我就这样改变了

var keyboardFrame: CGRect = (info[UIKeyboardFrameEndUserInfoKey] as NSValue).CGRectValue()

但是现在看来这也已经过时了。因为我现在收到此错误。

“ [NSObject:AnyObject]?” 没有名为“下标”的成员

我无法弄清楚该错误或如何解决。


问题答案:

正如Xcode 6 beta 6发行说明中提到的那样,已经对大量FoundationAPI进行了审核,以了解可选的一致性。这些更改分别T!T?或替换,或者分别T取决于该值是否可以为null。

notification.userInfo现在是 可选 词典:

class NSNotification : NSObject, NSCopying, NSCoding {
    // ...
    var userInfo: [NSObject : AnyObject]? { get }
    // ...
}

所以你必须拆开它。如果你 知道userInfo是不是nil,那么你可以简单地使用“强制展开”:

var info = notification.userInfo!

但请注意,如果userInfo为,则会在运行时崩溃nil

否则最好使用可选的分配:

if let info = notification.userInfo {
    var keyboardFrame: CGRect = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
} else {
    // no userInfo dictionary present
}


 类似资料:
  • 问题内容: 我知道,这个特定的错误已经在各处发布,并且代码有些基本,但是我自己仍然无法弄清楚这个错误,我需要建议。 问题是当我添加parse.com上提供的前两行代码以保存对象时 第二行出现以下错误: “ PFObject”没有名为“下标”的成员 我正在使用Xcode 6.3 beta2。所有必需的库都与通过BridgeHeader导入的二进制文件链接。 我应该使用什么语法? 问题答案: 发生这种

  • 问题内容: 我正在获取图像,并使用了以下代码。与配合使用时效果很好。更新到之后,我得到如下错误: 是我的代码还是Apple的bug?请在这里帮助我。TIA。 问题答案: 该初始值设定项现在是可失败的初始值设定项,因此它返回了optional 。 要快速修复您的错误,只需解开图像即可: 但我想您会在代码中多次引用该变量,在这种情况下,我建议使用可选绑定:

  • 问题内容: 我查看了以前的文章,但似乎找不到解决此问题的方法。所有三行代码都给出“类型’Any’没有下标成员”错误。对此还很陌生,因此不胜感激。 问题答案: 的类型为。下标是一种特殊的函数,它使用将值括在大括号中的语法。此下标功能由实现。 因此,这里发生的是,作为开发人员的YOU知道这是一个,但是编译器却没有。它不会让您调用该函数,因为您试图在type的值上调用它并且未实现。为此,您必须告诉编译器

  • 问题内容: 我想从个人资料字典中获取地址,但出现错误“输入任何类型?没有下标成员” 我该如何解决并获取地址?非常感谢。 问题答案: 当您使用下标配置文件时,您将获得一个实例。您选择使用适合同一数组中的各种类型已导致发生类型擦除。您需要将结果转换回其实型,以便它知道实例代表。然后,您可以对其进行下标: 但是,这非常笨拙,并且一开始就使用Dictionary并不是一个非常合适的情况。 在这种情况下,如

  • 问题内容: 我正在使用Swift 3和Alamofire 4.0。我可以打印出整个响应,但无法遍历和打印出每个值。当我尝试在下面打印“标题”时,出现“ NSFastEnumerationIterator.Element”类型(又名“ Any”)没有下标成员的情况。我们非常感谢您的帮助。 问题答案: 只需使用本机Swift 。除非绝对没有选择,否则请 始终 使用Swift本机类型。缺少类型信息,因此

  • 问题内容: 我正在用Swift语言和方法创建UITableViewController 我收到这个错误 NSIndexPath?在Swift中没有成员名称“行”错误 我不明白为什么。 这是我的代码 然后,如何使用数组dataStore元素设置cell.text? 问题答案: 您可以使用以下命令解开可选参数: 或者,如果确定不是,则可以使用以下命令强制展开: 请记住,在nil值上将是一个运行时异常,