\n автоматически добавлять значения массива после преобразования AnyObject в строку?

Я пытаюсь добавить значения типа AnyObject на мой arr, но когда я сначала конвертирую 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)")

Выход

1 ответ

Решение

print добавляет новые строки: ваши объекты неизменны, нигде не добавлено \n, это только в печатном представлении.

Он не добавляет символ новой строки при печати объектов после их объявления, поскольку их тип известен (String), поэтому print просто печатает строки без необходимости угадывать.

Но после того, как вы вернете свои ценности из NSUserDefaults.standardUserDefaults().objectForKey их тип AnyObject, так print ведет себя совершенно по-другому.

Другие вопросы по тегам