Ios 一对多关系CoreData Swift

Ios 一对多关系CoreData Swift,ios,swift,core-data,Ios,Swift,Core Data,核心数据在大多数情况下都非常有效。当我单击第一个VC(项目)的名称并将PerformSet设置为第二个VC(成本)时,我可以看到成本名称和其他数据。但当我在第一个VC中添加第二个名字时,我可以看到与第一个名字相同的数据 我想建立一对多的关系 我有两个数据模型: import Foundation import CoreData @objc(Items) class Items: NSManagedObject { @NSManaged var count: NSNumber @N

核心数据在大多数情况下都非常有效。当我单击第一个VC(项目)的名称并将PerformSet设置为第二个VC(成本)时,我可以看到成本名称和其他数据。但当我在第一个VC中添加第二个名字时,我可以看到与第一个名字相同的数据

我想建立一对多的关系

我有两个数据模型:

import Foundation
import CoreData

@objc(Items)
class Items: NSManagedObject {

   @NSManaged var count: NSNumber
   @NSManaged var name: String
   @NSManaged var cost: NSSet

}

import Foundation
import CoreData

@objc(Costs)
class Costs: NSManagedObject {

  @NSManaged var costsDate: NSDate
  @NSManaged var costsName: String
  @NSManaged var costsValue: NSNumber
  @NSManaged var account: Items

}
以下是
addAccount
的(第一个VC的名称)保存操作:

@IBAction func saveButtonPressed(sender: UIBarButtonItem) {

    let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
    var managedObjectContext = appDelegate.managedObjectContext
    let entityDescription = NSEntityDescription.entityForName("Items", inManagedObjectContext: managedObjectContext!)

    let account = Items(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext!)

    account.name = cellOneNameTextField.text
    if cellTwoCountTextField.text.isEmpty {

    } else {

    account.count = (cellTwoCountTextField.text).toInt()!
    }
    // Saving data
    appDelegate.saveContext()

    var request = NSFetchRequest(entityName: "Items")
    var error:NSError? = nil

    var results:NSArray = managedObjectContext!.executeFetchRequest(request, error: &error)!

    self.navigationController?.popViewControllerAnimated(true)

}
    @IBAction func saveButtonTapped(sender: UIBarButtonItem) {

    // CoreData Access
    let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
    var managedObjectContext = appDelegate.managedObjectContext
    let entityDescription = NSEntityDescription.entityForName("Costs", inManagedObjectContext: managedObjectContext!)

    let cost = Costs(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext!)

    cost.costsName = cellThreeNoteTextField.text
    cost.costsValue = (cellOnePriceTextField.text).toInt()!
    cost.costsDate = datePicker.date

    // Saving data
    appDelegate.saveContext()

    var request = NSFetchRequest(entityName: "Costs")
    var error:NSError? = nil

    var results:NSArray = managedObjectContext!.executeFetchRequest(request, error: &error)!

    for res in results {
        println(res)

    }
    delegate?.refreshTable()
    self.navigationController?.popViewControllerAnimated(true)

}
下面是
addCost
的保存操作:

@IBAction func saveButtonPressed(sender: UIBarButtonItem) {

    let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
    var managedObjectContext = appDelegate.managedObjectContext
    let entityDescription = NSEntityDescription.entityForName("Items", inManagedObjectContext: managedObjectContext!)

    let account = Items(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext!)

    account.name = cellOneNameTextField.text
    if cellTwoCountTextField.text.isEmpty {

    } else {

    account.count = (cellTwoCountTextField.text).toInt()!
    }
    // Saving data
    appDelegate.saveContext()

    var request = NSFetchRequest(entityName: "Items")
    var error:NSError? = nil

    var results:NSArray = managedObjectContext!.executeFetchRequest(request, error: &error)!

    self.navigationController?.popViewControllerAnimated(true)

}
    @IBAction func saveButtonTapped(sender: UIBarButtonItem) {

    // CoreData Access
    let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
    var managedObjectContext = appDelegate.managedObjectContext
    let entityDescription = NSEntityDescription.entityForName("Costs", inManagedObjectContext: managedObjectContext!)

    let cost = Costs(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext!)

    cost.costsName = cellThreeNoteTextField.text
    cost.costsValue = (cellOnePriceTextField.text).toInt()!
    cost.costsDate = datePicker.date

    // Saving data
    appDelegate.saveContext()

    var request = NSFetchRequest(entityName: "Costs")
    var error:NSError? = nil

    var results:NSArray = managedObjectContext!.executeFetchRequest(request, error: &error)!

    for res in results {
        println(res)

    }
    delegate?.refreshTable()
    self.navigationController?.popViewControllerAnimated(true)

}

我不知道您是否在某处这样做,但是您的
项目
应该使用
项目
中的
成本
变量将
计数
对象附加到自身。比如:

let account = Items(...)     
let cost = Cost(...)   
account.cost.addObject(cost)//and changing your var cost:NSSet into var cost:NSMutableSet
//then save Items
(我没有试过addObject,但您了解其原理)