在 Swift 中将任何对象转换为字符串

Converting anyobject to string in Swift

目前,testArray 是一个 AnyObject。我正在尝试将由 testScoreOne 表示的 testArray[0][0] 转换为字符串,而不是 anyObject。我的代码中没有任何 anyObject 声明,所以我不确定 Xcode 从哪里得到这个声明。

@IBAction func loadData(sender: NSArray) {
        if let testCompositeArray:NSArray = defaults.objectForKey("testScoreSATArray") as? NSArray {

            //self.showDataLabel.text = defaults.objectForKey("testScoreSATArray") as NSArray

            let testArray = defaults.objectForKey("testScoreSATArray") as NSArray

            let testScoreOne = testArray[0][0]

它将值类型设置为 AnyObject 因为 NSArray return 对象类型 AnyObject.

func objectAtIndex(_ index: Int) -> AnyObject

您是否有特定原因选择使用 NSArray 来存储您的值,而不是创建 Swift 数组,例如 [[String]](二维数组)或 [String](一维数组)。使用 [String] 语法创建数组,然后 return 值将作为 String.

类型

你有以下一种可能如何解决:

func loadData(sender: NSArray) {
var defaults = NSUserDefaults.standardUserDefaults()
if let testCompositeArray:NSArray = defaults.objectForKey("testScoreSATArray") as? NSArray {

    //self.showDataLabel.text = defaults.objectForKey("testScoreSATArray") as NSArray


    // in case your Array contains only strings
    if let testArray = defaults.objectForKey("testScoreSATArray") as? [[String]] {
        let testScore = testArray[0][0] // this is a string
    }

    // in case your array contains different types
    if let testArray = defaults.objectForKey("testScoreSATArray") as? [AnyObject] {
        if let testScore = testArray[0][0] as? String {
            //your code for string manipulation here
        }
    }

    //in case you are sure that always will be string on this position (Swift 1.2 syntax)
    let testArray = defaults.objectForKey("testScoreSATArray") as! [AnyObject]
    let testScore = testArray[0][0] as! String

}