\n 在将 AnyObject 转换为 String 后自动添加数组值?

\n automatically add on array Values after converting AnyObject to String?

我正在尝试在 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)")

Output

print 添加换行符:您的对象未更改,任何地方都没有添加“\n”,这仅在打印表示中。

在声明对象后打印对象时不会添加换行符,因为它们的类型是已知的 (String),所以 print 无需猜测即可正确打印字符串。

但是从 NSUserDefaults.standardUserDefaults().objectForKey 取回值后,它们的类型是 AnyObject,因此 print 的行为完全不同。