Я пытаюсь просто хранить и извлекать CoreData (что-то, что я сделал успешно раньше, с быстрым). Я получал нуль для данных, но теперь (не знаю, что изменилось). Я не получаю сообщение об ошибке, просто ничего не отображается в таблице. Я не уверен, что это проблема при хранении или извлечении объекта. Я следил за тем, как я сделал это в другом приложении, насколько это возможно, но, похоже, есть некоторые фундаментальные вещи, которые я не получаю. Вот что у меня есть.
Моя модель:
import Foundation
import CoreData
@objc(DataModel)
class DataModel: NSManagedObject {
@NSManaged var itemName: String
@NSManaged var quantity: NSNumber
@NSManaged var price: NSNumber
}
В моем tableviewcontroller со статическими ячейками для текстовых полей, которые я хочу сохранить данные:
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)
}
И в моем контроллере tableview я хочу получить данные show в динамических ячейках:
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
}
Любая помощь по концепции, которую я, возможно, пропустил где-то здесь, будет оценена по достоинству! Спасибо.
Обновление: поэтому я переделал свой код, который будет смоделирован после предложения @Bluehound. но я все еще получаю сообщение об ошибке: не знаю, как это исправить.