2016-05-29 11 views
0

Ich habe eine iOS-App, die ich möchte, dass Leute über eine Tabellenansichtszelle streichen, um diese Zelle zur Tabellenansicht der Favoritenseite hinzuzufügen.Zelle zu den Favoriten hinzufügen Tabellenansicht mit den Kerndaten

Es müsste Core-Daten verwenden, so dass die Favoriten nach dem Beenden der App speichern.

Jede Hilfe wäre willkommen!

Das ist, was ich bisher für die Zelle Swipe Wirkung haben:

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { 

    let favorite = UITableViewRowAction(style: .Normal, title: "Favorite") { (action, indexPath) in 
     // share item at indexPath 
     self.editing = false 
     print("Favorited \(indexPath.row)") 


    } 

    favorite.backgroundColor = UIColor.greenColor() 

    return [favorite] 
} 

Das ist mein Code für die Favoriten Seite ist.

var favorites : [String] = [] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    favorites = vars.favs 
    self.tableView.reloadData() 
} 



override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return favorites.count 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) 
    let object = favorites[indexPath.row] 
    cell.textLabel!.text = object 
    return cell 
} 

Dies ist ein Bild davon, wie werden die Favoriten hinzugefügt: Current Progress

+0

Können Sie uns zeigen, was Sie bisher getan haben? – penatheboss

+0

Ich habe nur die Wischaktion-Setup für die Zellen bisher. – Jacksmackod

+1

Wenn Sie eine Tabellenansicht haben, müssen Sie einige Funktionen für Tabellenansichten haben. Zeigen Sie uns diese – penatheboss

Antwort

2

Wenn eine Liste mit Favoriten wie Strings alle notwendigen bestehen in Ihrer Anwendung ist, können Sie in der Lage sein, einfach NSUserDefaults verwenden anstelle von Core Data.

Um ein Array von Favoriten zu speichern:

let favorite = UITableViewRowAction(style: .Normal, title: "Favorite") { (action, indexPath) in 
    var favorites : [String] = [] 
    let defaults = NSUserDefaults.standardUserDefaults() 
    if let favoritesDefaults : AnyObject? = defaults.objectForKey("favorites") { 
     favorites = favoritesDefaults! as [String] 
    } 

    favorites.append(tableView.cellForRowAtIndexPath(indexPath).textLabel!.text) 
    defaults.setObject(favorites, forKey: "favorites") 
    defaults.synchronize() 
} 

das Array von Favoriten in Ihren Favoriten Seite zu lesen:

var favorites : [String] = [] 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let defaults = NSUserDefaults.standardUserDefaults() 
    if let favoritesDefaults : AnyObject? = defaults.objectForKey("favorites") { 
     favorites = favoritesDefaults! as [String] 
    } 

    self.tableView.reloadData() 
} 
+0

Wird dies auch die Bilder übertragen? – Jacksmackod

+0

@Jacksmackod Sie können den Pfad zum Bild speichern, das an anderer Stelle auf der Festplatte gespeichert wird. Aber auch mit Core-Daten ist es nicht empfehlenswert, Bilder direkt darin zu speichern. Siehe http://stackoverflow.com/a/30672362/1420793. Ich dachte zuerst, dass Sie nur eine ID oder etwas Ähnliches speichern müssen, das den Inhalt der Zelle verweist, die war. Wird Ihre Zelle nur ein Bild oder eine komplexere Datenstruktur haben? Wenn es nur ein Bild ist, würde die obige Methode immer noch funktionieren. Wenn Sie jedoch mehr Daten speichern möchten, wären Kerndaten in der Tat die bessere Wahl. –

+0

Ich möchte die Zelle das Textbild und auch seine Aktion behalten (die Ansicht ändern) – Jacksmackod