首页 > 解决方案 > 使用关系和谓词访问 Core Data 中的数据

问题描述

我正在使用核心数据来存储两个包含关系的数据库。有一个日志数据库和一个 IFRApproaches 数据库。

日志条目可以有多种方法。一种方法只能链接到一个日志条目。

附件是我的数据模型和关系的屏幕截图。 数据模型 关系 1 关系 2

当按下“提交”按钮时,这是将条目保存到日志的代码,以及方法。我需要与单个条目相关联的方法(多少)。我的问题是我以后如何使用谓词查询数据库以获取与各种条目相关联的所有方法。

lazy var newEntry = Logbook(context: LoadData.shared.context)
        if errorCount == 0 {
            
            if modifyEntry == false {
                if entryHolding.date == nil {
                    newEntry.date = Date()
                } else {
                    newEntry.date = entryHolding.date
                    
                }
                newEntry.aircraftID = entryHolding.aircraftID
                
                
                
                
                newEntry.aircraftSelect = LoadData.shared.aircraftArray[aircraftArrayIndexPath!.row]
                newEntry.categoryAndClass = newEntry.aircraftSelect?.categoryAndClass
                newEntry.typeCode = entryHolding.typeCode
                newEntry.from = entryHolding.from
                newEntry.to = entryHolding.to
                newEntry.route = entryHolding.route
                newEntry.totalTime = entryHolding.totalTime
                newEntry.pic = entryHolding.PIC
                newEntry.sic = entryHolding.SIC
                newEntry.solo = entryHolding.solo
                newEntry.dual = entryHolding.dual
                newEntry.crossCountry = entryHolding.crossCountry
                newEntry.night = entryHolding.night
                newEntry.simInstrument = entryHolding.simInstrument
                newEntry.actualInstrument = entryHolding.actualInstrument
                newEntry.hold = Int16(entryHolding.hold)
                newEntry.dayLanding = Int16(entryHolding.dayLanding)
                newEntry.nightLanding = Int16(entryHolding.nightLanding)
                newEntry.bfr = entryHolding.BFR
                newEntry.checkride = entryHolding.checkRide
                newEntry.ipc = entryHolding.IPC
                newEntry.comments = entryHolding.comments
                
                
                
                for i in 0..<approach.count {
                    var newApproach = IFRApproaches(context: LoadData.shared.context)
                    newApproach.airport = approach[i].airportID
                    newApproach.typeOfApproach = approach[i].type
                    newApproach.runway = approach[i].runwayNum
                    //newApproach.entry = newEntry
                    newEntry.addToApproaches(newApproach)
                    LoadData.shared.approachArray.append(newApproach)
                    
                }
                
                
                
                LoadData.shared.entryArray.append(newEntry)
                LoadData.shared.saveData()

标签: swiftrelationship

解决方案


推荐阅读