在我的代码中保存管理对象时遇到问题。出于某种原因,当我将数据放在第一个视图控制器中时,一切运行良好。例如
我放置了新的类别,如" Fruits"," Dairy"," Meats"。第一个视图控制器获取数据。当我点击特定项目,如" Dairy",并放入" Milk"对于该部分内的项目。如果我回到上一个视图控制器并点击" Meats",我会看到我在" Dairy"下面输入的相同数据。如何正确管理我的NSManage对象。
以下是我的代码。
导入UIKit 导入CoreData
class HomeSpecificItemViewController:UIViewController {
var selectedItem : [Items] = []
@IBOutlet weak var itemNameTextField: UITextField!
@IBOutlet weak var brandNameTextField: UITextField!
@IBOutlet weak var caloriesTextField: UILabel!
@IBOutlet weak var priceTextField: UILabel!
@IBOutlet weak var amountTextField: UITextField!
@IBOutlet weak var threshHoldNumberField: UITextField!
@IBOutlet weak var stepper: UIStepper!
override func viewDidLoad() {
super.viewDidLoad()
stepper.wraps = true
stepper.autorepeat = true
stepper.maximumValue = 10
// Do any additional setup after loading the view.
}
@IBAction func saveButton(sender: AnyObject) {
let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
let itemDescription = NSEntityDescription.insertNewObjectForEntityForName("Items", inManagedObjectContext: context) as! Items
itemDescription.setValue(itemNameTextField.text, forKey: "Items")
itemDescription.setValue(brandNameTextField.text, forKey: "Items")
do {
try context.save()
}catch _ {
}
/*
let request = NSFetchRequest(entityName: "Items")
let results : [AnyObject]?
do {
results = try context.executeFetchRequest(request)
}catch _ {
results = nil
}
if results != nil {
self.itemDescription = results as! [Items]
}
* /
}
@IBAction func cancelPressed(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
@IBAction func increaseNumberStepper(sender: UIStepper) {
threshHoldNumberField.text = Int(sender.value).description
}
}
答案 0 :(得分:0)
每个类别都有特定的视图控制器吗?如果是这样,您需要做的是将谓词添加到更具体的视图控制器。
类似的东西:
var request = NSFetchRequest(entityName: "Food")
request.predicate = NSPredicate(format: "category == %@", "Meat")
meats = try! context.executeFetchRequest(request)
这将返回Food
个属性保存字符串category
的所有"Meat"
个对象的数组。
答案 1 :(得分:0)
我正在将数据保存到核心数据,而没有正确声明管理上下文,也没有将文本标签分配给核心数据对象。
问题解决了!