mastodon-ios/MastodonSDK/Sources/CoreDataStack/Utility/ManagedObjectRecord.swift

39 lines
962 B
Swift

//
// ManagedObjectRecord.swift
// ManagedObjectRecord
//
// Created by Cirno MainasuK on 2021-8-25.
// Copyright © 2021 Twidere. All rights reserved.
//
import Foundation
import CoreData
public class ManagedObjectRecord<T: NSFetchRequestResult>: Hashable {
public let objectID: NSManagedObjectID
public init(objectID: NSManagedObjectID) {
self.objectID = objectID
}
public func object(in managedObjectContext: NSManagedObjectContext) -> T? {
return managedObjectContext.object(with: objectID) as? T
}
public static func == (lhs: ManagedObjectRecord<T>, rhs: ManagedObjectRecord<T>) -> Bool {
return lhs.objectID == rhs.objectID
}
public func hash(into hasher: inout Hasher) {
hasher.combine(objectID)
}
}
extension Managed where Self: NSManagedObject {
public var asRecrod: ManagedObjectRecord<Self> {
return .init(objectID: objectID)
}
}