Упорядоченный список с основными данными - PullRequest
0 голосов
/ 12 сентября 2018

Я работаю с классом, который является NSManagedObject и Codable.Это Feed и имеет кратное Albums.Я хочу упорядоченный список Albums, но Core Data вынуждает меня использовать Set, который не упорядочен.Я могу использовать NSOrderedSet, но он не работает с Codable.Что было бы лучшим способом получить упорядоченный список в Core Data.Ниже модель, которую я пытаюсь заставить работать.

public class Feed: NSManagedObject, Codable {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Feed> {
        return NSFetchRequest<Feed>(entityName: "Feed")
    }

    @NSManaged public var title: String
    @NSManaged public var albums: Set<Album>
    @NSManaged public var feedContainer: FeedContainer?

    enum CodingKeys: String, CodingKey {
        case title
        case albums = "results"
        case feedContainer
    }

    public func encode(to encoder: Encoder) throws {
        var container = encoder.container(keyedBy: CodingKeys.self)
        try container.encode(title, forKey: .title)
        try container.encode(albums, forKey: .albums)
    }

    public required convenience init(from decoder: Decoder) throws {
        guard let contextUserInfoKey = CodingUserInfoKey.context,
            let managedObjectContext = decoder.userInfo[contextUserInfoKey] as? NSManagedObjectContext,
            let entity = NSEntityDescription.entity(forEntityName: "Feed", in: managedObjectContext) else {  fatalError("Failed to decode Subject!")  }
        self.init(entity: entity, insertInto: managedObjectContext)

        let container = try decoder.container(keyedBy: CodingKeys.self)
        title = try container.decodeIfPresent(String.self, forKey: .title) ?? ""
        albums = try container.decodeIfPresent(Set<Album>.self, forKey: .albums) ?? []
    }
}

1 Ответ

0 голосов
/ 12 сентября 2018

Я хочу упорядоченный список альбомов

Это ваша работа для присвоения сущности альбома атрибута для сортировки.Затем при получении вы можете передать дескриптор сортировки для получения альбомов, отсортированных по этому атрибуту.

...