Wie speichere ich mit swift ein Array mit einer benutzerdefinierten Struktur in NSUserDefault?

Ich habe eine benutzerdefinierte Struktur namens "News", die ich an NSUserDefault in das Array anhängen möchte. Es wird jedoch der Fehler "Typ 'News' entspricht nicht dem Protokoll 'AnyObject'" angezeigt.

Ich möchte die 'News'-Struktur nicht in eine Klasse ändern, da sie bereits für anderen Code verwendet wird. Kann ich den Typ NSUserDefaults.standardUserDefaults (). ArrayForKey ("savedNewsArray") in [News] ändern?

var savedNews = NSUserDefaults.standardUserDefaults().arrayForKey("savedNewsArray")
var addSavedNews = savedNews as? [News]
addSavedNews.append(News(id: "00", title: newsTitle, source: source, imageURL: imageURL, url: url))
NSUserDefaults.standardUserDefaults().setObject(addSavedNews, forKey: "savedNewsArray")
NSUserDefaults.standardUserDefaults().synchronize()

Hier ist die 'News'-Struktur.

public struct News {
    public var id: String
    public var title: String
    public var source: String?
    public var imageURL: String?
    public var date: NSDate?
    public var url: String

    init(id: String, title: String, source: String, imageURL: String, url: String) {
        self.id = id
        self.title = title
        self.source = source
        self.imageURL = imageURL
        self.url = url
    }
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage