2014-09-27 36 views
17

'u yazmak için Xcode6 beta 5 ile çalıştığı anlaşılan bazı kodları tekrar gözden geçirdikten sonra, "İfade türünü değiştiremezsiniz" [AnyObject]? ' Bu hat için 'NSArray'" hatası yazın:İfade türü '[AnyObject]?' Dönüştürülemiyor 'NSArray'

İşte
let textFields:NSArray = loginAlert.textFields as NSArray 

sorun olarak karşımıza çıkmaktadır kod bölümüdür:

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    
     })) 
} 

sorununun ne Herhangi fikirler?

+2

denemek mi! NSArray ' –

cevap

31

"ifadenin türünü dönüştürülemez '[AnyObject]?' loginAlert.textFields İsteğe Bağlı olarak tanımlanır ve onun nil değil eminseniz bu nedenle nil olabilir gibi 'NSArray' yazmanız"

Sesler - ! kullanarak bu ilk paketini:

loginAlert.textFields as AnyObject! as NSArray 

ya:

oyunda
loginAlert.textFields! as NSArray 

Oldukça basit bir örnek Zemin: `AnyObject olarak loginAlert.textFields:

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 
+0

olarak Çok teşekkür ederim! Bu benim problemimi çözdü! Açıklama için teşekkürler, çok takdir! –

İlgili konular