插入数据时如何将项目连接到一对多关系中的类别

问题描述 投票:0回答:1

我有2个实体,一个客户,其他是案例,关系是一个到多个客户有很多案例,关系名称为客户案例实体和客户实体,因此在我的代码中我通过segue将所选客户名称传递给添加案例的UIViewController

var CustmerNameForAddNewCaseVar: Customers?
CustomerNameLbl.text = CustmerNameForAddNewCaseVar?.name 

在保存按钮中

let newCase : Cases!
    newCase = Cases(context:context)
    newCase.caseName = caseNameTextField.text
    newCase.toCustomers = CustmerNameForAddNewCaseVar?.name // here i got error ... Cannot assign value of type 'String?' to type 'Customers?'
    do{
        AppDel.saveContext()
}catch{
        print(error)
    }

任何帮助谢谢你

ios core-data swift3
1个回答
0
投票

要使用您的示例...您将更改您的代码以匹配此:

let newCase : Cases!
newCase = Cases(context:context)
newCase.caseName = caseNameTextField.text
newCase.toCustomers = CustmerNameForAddNewCaseVar
do {
    // Save Context
} catch {
    // Handle Error
}

请注意“newCastle.to Customers”行已更改。

其他人在您的问题的评论中建议的是清除您的实体和变量的命名,以帮助澄清用法。一个例子是:

import UIKit
import CoreData

class Customer: NSManagedObject {
    @NSManaged var cases: Set<Case>?
}

class Case: NSManagedObject {
    @NSManaged var customer: Customer?
    @NSManaged var name: String?
}

class ViewController: UIViewController {

    var customer: Customer?
    var context: NSManagedObjectContext?

    @IBOutlet weak var caseName: UITextField?

    @IBAction func didTapSave(_ sender: UIButton) {
        guard let context = self.context else {
            return
        }

        guard let customer = self.customer else {
            return
        }

        let newCase = Case(context: context)
        newCase.name = caseName?.text
        newCase.customer = customer

        do {
            try context.save()
        } catch {
            // Handle Error
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.