Я пытаюсь узнать, как использовать этот новый модный шаблон отношений в базовых данных для эмуляции массива String.У меня есть объект Alarm и объект NotificationUuid.Alarm является родительским объектом NotificationUuid, потому что у Alarm может быть много NotificationUuids, а у NotificationUuid может быть только один родительский Alarm.У меня все это настроено в моем файле .xcdatamodeld.
Мой вопрос таков: когда я получаю родительский объект Alarm, как это:
private func loadAlarms() {
os_log("loadAlarms() called", log: OSLog.default, type: .debug)
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<AlarmMO>(entityName: "Alarm")
do {
if self.alarms.count == 0 {
self.alarms = try managedContext.fetch(fetchRequest)
os_log("Loading %d alarms", log: OSLog.default, type: .debug, self.alarms.count)
} else {
os_log("Didn't need to load alarms", log: OSLog.default, type: .debug)
}
} catch let error as NSError {
print("Could not fetch alarms. \(error), \(error.userInfo)")
}
}
я получаю AlarmMO (Alarm ManagedОбъект) потомки объекта, объекты NotificationUuid, бесплатно?Или мне теперь тоже нужно настроить запрос на выборку?Как работают все эти необычные отношения между родителями и детьми, и как мне устанавливать / загружать вещи из этих объектов?
Спасибо
Вот как я определил AlarmMO:
import CoreData
@objc(AlarmMO)
public class AlarmMO: NSManagedObject {
@NSManaged public var alarmNumber: Int64
@NSManaged public var alarmTime: NSDate?
@NSManaged public var endTimeInterval: Double
@NSManaged public var recurrence: Int64
@NSManaged public var startTimeInterval: Double
@NSManaged public var notificationUuidChildren: NSSet?
}
// MARK: Generated accessors for notificationUuidChildren
extension AlarmMO {
@objc(addNotificationUuidChildrenObject:)
@NSManaged public func addToNotificationUuidChildren(_ value: NotificationUuidMO)
@objc(removeNotificationUuidChildrenObject:)
@NSManaged public func removeFromNotificationUuidChildren(_ value: NotificationUuidMO)
@objc(addNotificationUuidChildren:)
@NSManaged public func addToNotificationUuidChildren(_ values: NSSet)
@objc(removeNotificationUuidChildren:)
@NSManaged public func removeFromNotificationUuidChildren(_ values: NSSet)
}
и NotificationUuidMO:
import CoreData
@objc(NotificationUuid)
public class NotificationUuidMO: AlarmMO {
@NSManaged public var notificationUuid: String
@NSManaged public var alarmParent: AlarmMO
}