2016-05-24 11 views
0

Ich versuche AnyObject Typ Werte an meine arr anzuhängen. aber wenn ich zuerst AnyObject zu String umwandele fügt es \ n automatisch mit jedem Wert hinzu? Ich wollte nicht arr Typ und Struktur ändern. Kann mir bitte jemand sagen was ich mache ?? Dank n fügt automatisch Array-Werte hinzu, nachdem AnyObject in String konvertiert wurde?

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

+0

Ihr '[(String, String)]' Array heißt 'Tupel'. Ein bisschen irreführend, nicht? – Alexander

+0

Aber wenn ich nach der arr-Initialisierung drucke, zeigt es nicht \ n bei Ausgabe "[(" https://www.youtube.com/watch?v=AtKZKl7Bgu0 "," 6.jpg "), (" https: // www .youtube.com/watch? v = 4SYlLi5djz0 "," 7.jpg ")]' – AzKa

+0

Wenn ich dieses 'Array' in' CollectionViewCell' nach der Initialisierung benutze, zeigt CollectionViewCell Link und Bild perfekt an, aber wenn ich es in CollectionViewCell nach 'verwende arr.append (tup) 'nichts anzeigen? – AzKa

Antwort

1

print fügt die Zeilenumbrüche: Ihre Objekte unverändert sind, gibt es keine "\ n" überall hinzugefügt, das nur in der gedruckten Darstellung ist.

Es fügt nicht die Newline hinzu, wenn Sie die Objekte drucken, nachdem Sie sie deklariert haben, weil ihr Typ bekannt ist (String), also print druckt nur die Strings korrekt, ohne raten zu müssen.

Aber nachdem Sie Ihre Werte von NSUserDefaults.standardUserDefaults().objectForKey zurückbekommen, ist ihr Typ AnyObject, also verhält sich print völlig anders.