我正在处理核心数据,我有两个实体:
游泳池 参数 每个游泳池可以有多个参数
我已经保存并获取了游泳池的数据。
我已经通过表格保存了它们。
在我的AppDelegate中我有:
let ad = UIApplication.shared.delegate as! AppDelegate
let context = ad.persistentContainer.viewContext
以及这里的功能:
var swimmingpool: SwimminPool!
if swimmingPoolToEdit == nil {
swimming = SwimminPool(context: context)
} else {
swimming = swimmingPoolToEdit
}
if let name = swimmingName.text {
swimming.name = name
}
if let volume = swimmingVolume.text {
swimming.volume = volume
.........................................................
ad.saveContext()
我按照这样执行获取:
var controller: NSFetchedResultsController<SwimmingPool>!
func attemptFetch() {
let fetchRequest: NSFetchRequest<SwimminPool> = SwimminPool.fetchRequest()
let dataSort = NSSortDescriptor(key: "createdAt", ascending: false)
fetchRequest.sortDescriptors = [dataSort]
let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
controller.delegate = self
self.controller = controller
do {
try controller.performFetch()
} catch {
let error = error as NSError
print("\(error.debugDescription)")
}
}
通过segue我将所有数据传递给新控制器并通过新表格(在另一个控制器中)我试图保存参数的数据并将它们连接到特定的游泳池。 / p>
我是否需要保存数据,就像我为游泳池所做的那样,这种关系会自动连接这两个实体,还是我需要在保存后连接它们?
我是swift的新手,我不确定如何保存相关数据
保存时或者我将执行参数提取时进行连接?
谢谢!
答案 0 :(得分:3)
创建参数托管对象,然后将此参数链接到 SwimingPool 托管对象:
let parameter = Parameters(context: context)
parameter.chlorum = Double(12245454.12211) // insert your value
parameter.oxigen = "your value here"
parameter.createdAt = "your value here"
let swimming = SwimminPool(context: context)
swimming.parameter = parameter
ad.saveContext()
答案 1 :(得分:1)
如果您要将Parameters
添加到特定SwimmingPool
SwimmingPool
实例传递给表单控制器。Parameters
实例插入上下文来创建它们。SwimmingPool
属性/关系上的insert
或parameter
子类生成的访问者addToParameter
,将关系添加到NSManagedObject
实例。< / LI>
注意:为避免混淆,Entity
总是以单数形式命名(例如SwimmingPool
/ Parameter
),也是单一形式的一对一关系(例如{{1}和复数形式的一对多关系(例如parameter
)