在Swift中将anyobject转换为字符串

时间:2015-05-21 21:14:36

标签: xcode swift nsarray

目前,testArray是一个AnyObject。我尝试将testArray[0][0](由testScoreOne表示的字符串转换为字符串,而不是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]

2 个答案:

答案 0 :(得分:0)

它将值类型设置为AnyObject,因为NSArray返回对象类型AnyObject

func objectAtIndex(_ index: Int) -> AnyObject

是否有特定原因选择使用NSArray来存储您的值,而不是创建像[[String]](2d数组)或[String](1d数组)这样的Swift数组。使用[String]语法创建数组,然后将值返回为String类型。

答案 1 :(得分:0)

您有以下可能性之一如何解决:

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

}