Sto cercando di archiviare e recuperare semplicemente CoreData (cosa che ho fatto con successo prima con swift). Stavo diventando un nulla per i dati, ma ora (non sono sicuro di cosa sia cambiato) non sto ricevendo un errore, solo niente che mostra in tableview. Non sono sicuro se si tratta di un problema nella memorizzazione o nel recupero dell'oggetto. Ho seguito il modo in cui l'ho fatto in un'altra mia app il più vicino possibile, ma sembra che ci sia qualcosa di fondamentale che non riesco a ottenere. Ecco cosa ho.recupero dei dati di base nelle celle tableview swift
Il mio modello:
import Foundation
import CoreData
@objc(DataModel)
class DataModel: NSManagedObject {
@NSManaged var itemName: String
@NSManaged var quantity: NSNumber
@NSManaged var price: NSNumber
}
Nel mio tableviewcontroller con celle statiche per i campi di testo che voglio salvare i dati da:
import UIKit
import CoreData
class NewItemTableViewController: UITableViewController {
@IBOutlet weak var itemNameTextField: UITextField!
@IBOutlet weak var itemPriceTextField: UITextField!
@IBOutlet weak var itemQuantityTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func saveButton(sender: AnyObject) {
//CoreData
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let managedContext : NSManagedObjectContext = appDelegate.managedObjectContext!
let entity = NSEntityDescription.entityForName("Item", inManagedObjectContext: managedContext)
var newItem = DataModel(entity: entity!, insertIntoManagedObjectContext: managedContext)
newItem.itemName = itemNameTextField.text
//newItem.price = itemPriceTextField.text
//newItem.quantity = itemQuantityTextField
managedContext.save(nil)
self.navigationController?.popToRootViewControllerAnimated(true)
}
@IBAction func cancelButton(sender: AnyObject) {
self.navigationController?.popToRootViewControllerAnimated(true)
}
E nel mio tableviewcontroller che voglio recuperare il un dato mostra in celle dinamiche:
class ItemListTableViewController: UITableViewController {
var items : Array<AnyObject> = []
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Potentially incomplete method implementation.
// Return the number of sections.
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete method implementation.
// Return the number of rows in the section.
return items.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let CellID: NSString = "cell"
var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(CellID) as UITableViewCell
var data: NSManagedObject = items[indexPath.row] as NSManagedObject
var itemName = data.valueForKey("itemName") as String
var price = data.valueForKey("price") as NSNumber
var quantity = data.valueForKey("quantity") as NSNumber
cell.textLabel!.text! = "\(itemName)"
cell.detailTextLabel!.text! = "Price: \(price) - Quantity: \(quantity)"
return cell
}
Qualsiasi aiuto su un concetto Potrei aver perso s da qualche parte qui sarebbe apprezzato! Grazie.
Aggiornamento: così ho rifatto il mio codice per essere modellato dopo il suggerimento di @Bluehound. ma sto ancora ricevendo un errore: non so come risolverlo.
Come e dove è il vostro array '' degli articoli popolato? – pbasdf