diff --git a/AltStore/Operations/UpdatePatronsOperation.swift b/AltStore/Operations/UpdatePatronsOperation.swift index 8e4064b8..c55f11de 100644 --- a/AltStore/Operations/UpdatePatronsOperation.swift +++ b/AltStore/Operations/UpdatePatronsOperation.swift @@ -70,7 +70,7 @@ final class UpdatePatronsOperation: ResultOperation do { let patrons = try result.get() - let managedPatrons = patrons.map { ManagedPatron(patron: $0, context: self.context) } + let managedPatrons = patrons.compactMap { ManagedPatron(patron: $0, context: self.context) } let patronIDs = Set(managedPatrons.map { $0.identifier }) let nonFriendZonePredicate = NSPredicate(format: "NOT (%K IN %@)", #keyPath(ManagedPatron.identifier), patronIDs) diff --git a/AltStoreCore/Model/ManagedPatron.swift b/AltStoreCore/Model/ManagedPatron.swift index a482853a..1e628b40 100644 --- a/AltStoreCore/Model/ManagedPatron.swift +++ b/AltStoreCore/Model/ManagedPatron.swift @@ -19,11 +19,14 @@ public class ManagedPatron: NSManagedObject, Fetchable super.init(entity: entity, insertInto: context) } - public init(patron: Patron, context: NSManagedObjectContext) + public init?(patron: Patron, context: NSManagedObjectContext) { + // Only cache Patrons with non-nil names. + guard let name = patron.name else { return nil } + super.init(entity: ManagedPatron.entity(), insertInto: context) - self.name = patron.name + self.name = name self.identifier = patron.identifier } } diff --git a/AltStoreCore/Patreon/Patron.swift b/AltStoreCore/Patreon/Patron.swift index d716b86c..ef55bab4 100644 --- a/AltStoreCore/Patreon/Patron.swift +++ b/AltStoreCore/Patreon/Patron.swift @@ -14,7 +14,7 @@ extension PatreonAPI { struct Attributes: Decodable { - var full_name: String + var full_name: String? var patron_status: String? } @@ -54,7 +54,7 @@ extension Patron public class Patron { - public var name: String + public var name: String? public var identifier: String public var status: Status