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

时间:2016-05-24 15:04:38

标签: swift foundation

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

1 个答案:

答案 0 :(得分:1)

print添加换行符:你的对象没有变化,在任何地方都没有添加“\ n”,这只是在打印的表示中。

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

但是,在您从NSUserDefaults.standardUserDefaults().objectForKey获取值后,其类型为AnyObject,因此print的行为完全不同。