在 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
}
目前,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
}