我正在尝试在arr
上添加AnyObject类型值。但是当我首先将AnyObject
转换为String
时,它会自动为每个值添加\ n?
我不想改变arr
类型和结构。谁能告诉我我做了什么?
感谢
var arr : [(String, String)] = [("https://www.youtube.com/watch?v=AtKZKl7Bgu0","6.jpg"),
("https://www.youtube.com/watch?v=4SYlLi5djz0","7.jpg")]
var url : [String] = []
var image : [String] = []
for i in arr{
url.append(i.0)
image.append(i.1)
print("URL values.............. \(url)")
print("Image values.............. \(image)")
}
NSUserDefaults.standardUserDefaults().setObject(url, forKey: "u")
NSUserDefaults.standardUserDefaults().setObject(image, forKey: "i")
NSUserDefaults.standardUserDefaults().synchronize()
let u = NSUserDefaults.standardUserDefaults().objectForKey("u")! //as! String
let i = NSUserDefaults.standardUserDefaults().objectForKey("i")!
print("U Values \(u)")
print("I values \(i)")
// let tup = ("\(u)", "\(i)")
let tup = (String(u),String(i))
print("tup Values \(tup)")
arr.removeAll()
arr.append(tup)
print("arr Values \(arr)")
答案 0 :(得分:1)
print
添加换行符:你的对象没有变化,在任何地方都没有添加“\ n”,这只是在打印的表示中。
在声明对象后打印对象时,它不会添加换行符,因为它们的类型是已知的(String),因此print
只需正确打印字符串而无需猜测。
但是,在您从NSUserDefaults.standardUserDefaults().objectForKey
获取值后,其类型为AnyObject
,因此print
的行为完全不同。