斯威夫特 2:任何对象?不能转换为 NSString

Posted

技术标签:

【中文标题】斯威夫特 2:任何对象?不能转换为 NSString【英文标题】:Swift 2: AnyObject? is not convertible to NSString 【发布时间】:2016-05-05 06:47:26 【问题描述】:

我正在尝试使用会话检查现有登录,但我被抛出了这个错误

'AnyObject?'不能转换为“NSString”;你的意思是用'as!'强制沮丧?

在这行代码

self.usernameLabel.text = prefs.valueForKey("USERNAME") as NSString

完整的代码块是这样的

import UIKit

class ViewController: UIViewController 

@IBOutlet weak var usernameLabel: UILabel!

//Check for existing login, else show login
override func viewDidAppear(animated: Bool) 
    super.viewDidAppear(true)

    let prefs: NSUserDefaults = NSUserDefaults.standardUserDefaults()
    let isLoggedIn:Int = prefs.integerForKey("ISLOGGEDIN") as Int
    if (isLoggedIn != 1) 
        self.performSegueWithIdentifier("goToLogin", sender: self)
     else 
        self.usernameLabel.text = prefs.valueForKey("USERNAME") as NSString
    


override func viewDidLoad() 
    super.viewDidLoad()



override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.




修复它的最佳方法是什么?

【问题讨论】:

你可以当作! NSString 【参考方案1】:

试试这个……

  if let username = prefs.valueForKey("USERNAME") as? String
      self.usernameLabel.text = username
  

或者如果你想使用 NSString ..(只是一个选项)

 if let username = prefs.valueForKey("USERNAME") as? NSString
      self.usernameLabel.text = username
  

【讨论】:

【参考方案2】:

将 NSString 更改为字符串,

self.usernameLabel.text = prefs.valueForKey("USERNAME") as? String

工作正常,希望对您有所帮助

【讨论】:

以上是关于斯威夫特 2:任何对象?不能转换为 NSString的主要内容,如果未能解决你的问题,请参考以下文章

如何将数组对象转换为 JSON 字符串。 IOS 8。斯威夫特 1.2

精灵包 |斯威夫特 3 | - 无法将 Void 类型的值(aka'()' 转换为预期的参数类型 'unsafeRawPointer'

如何将字符串转换为 utf-8? (斯威夫特,阿拉莫菲尔)

将 Alamofire 完成处理程序转换为 Async/Await |斯威夫特 5.5,*

UISearchDisplayController 错误 - 斯威夫特

如何在字典数组中转换 FIRDataSnapshot?斯威夫特 3