目前,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]
答案 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
}