首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法转换表达式的类型'[AnyObject]?‘键入'NSArray‘

无法转换表达式的类型'[AnyObject]?‘键入'NSArray‘
EN

Stack Overflow用户
提问于 2014-09-27 23:42:14
回答 1查看 25.3K关注 0票数 18

在重新访问一些似乎适用于Xcode6 beta 5的代码时,我注意到下面这一行出现了“无法将表达式的类型'AnyObject?‘转换为类型'NSArray'”的错误:

代码语言:javascript
复制
let textFields:NSArray = loginAlert.textFields as NSArray

下面这段代码似乎是问题所在:

代码语言:javascript
复制
override func viewDidAppear(animated: Bool) {
    if PFUser.currentUser() == nil{
        var loginAlert:UIAlertController = UIAlertController(title: "Sign Up / Login", message: "Please sign up or login", preferredStyle: UIAlertControllerStyle.Alert)

loginAlert.addTextFieldWithConfigurationHandler({
            textfield in
            textfield.placeholder = "Your username"
        })

        loginAlert.addTextFieldWithConfigurationHandler({
            textfield in
            textfield.placeholder = "Your password"
            textfield.secureTextEntry = true
        })

        loginAlert.addAction(UIAlertAction(title: "Login", style: UIAlertActionStyle.Default, handler: {
            alertAction in
            let textFields:NSArray = loginAlert.textFields as NSArray
            let usernameTextfield:UITextField = textFields.objectAtIndex(0) as UITextField
            let passwordTextfield:UITextField = textFields.objectAtIndex(1) as UITextField            
        }))
}

你知道问题出在哪里吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-27 23:45:51

“无法将表达式的类型'AnyObject?‘转换为类型'NSArray'”

听起来像是loginAlert.textFields被定义为可选的,并且可能是nil,因此如果您确定它不是nil -首先使用!对其进行解包

代码语言:javascript
复制
loginAlert.textFields as AnyObject! as NSArray

或者:

代码语言:javascript
复制
loginAlert.textFields! as NSArray

游乐场中非常基本的例子:

代码语言:javascript
复制
var temp:Array<String>?  // define Optional array 

temp = Array<String>()   // well, we create new Array but since its optional we need set "!" each time during manipulation

temp!.append("val1") // 1st off we unwrap it and add new value

var newArray = temp as AnyObject! as Array<String> // to downcast to Array<String>, we unwrap it with AnyObject! first
票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26076336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档