swift保存多个管理对象

时间:2015-11-04 22:43:14

标签: swift nsmanagedobject saving-data

在我的代码中保存管理对象时遇到问题。出于某种原因,当我将数据放在第一个视图控制器中时,一切运行良好。例如

我放置了新的类别,如" 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

}

}

2 个答案:

答案 0 :(得分:0)

每个类别都有特定的视图控制器吗?如果是这样,您需要做的是将谓词添加到更具体的视图控制器。

类似的东西:

var request = NSFetchRequest(entityName: "Food")
request.predicate = NSPredicate(format: "category == %@", "Meat")

meats = try! context.executeFetchRequest(request)

这将返回Food个属性保存字符串category的所有"Meat"个对象的数组。

答案 1 :(得分:0)

我正在将数据保存到核心数据,而没有正确声明管理上下文,也没有将文本标签分配给核心数据对象。

问题解决了!