diff --git a/AltStoreCore/Model/AltStore.xcdatamodeld/AltStore 13.xcdatamodel/contents b/AltStoreCore/Model/AltStore.xcdatamodeld/AltStore 13.xcdatamodel/contents
index c80ebb34..e99bcc3e 100644
--- a/AltStoreCore/Model/AltStore.xcdatamodeld/AltStore 13.xcdatamodel/contents
+++ b/AltStoreCore/Model/AltStore.xcdatamodeld/AltStore 13.xcdatamodel/contents
@@ -30,7 +30,7 @@
-
+
diff --git a/AltStoreCore/Model/AppPermission.swift b/AltStoreCore/Model/AppPermission.swift
index 1a699f33..ed23bf7c 100644
--- a/AltStoreCore/Model/AppPermission.swift
+++ b/AltStoreCore/Model/AppPermission.swift
@@ -77,7 +77,14 @@ public class AppPermission: NSManagedObject, Decodable, Fetchable
{
/* Properties */
@NSManaged public var type: ALTAppPermissionType
- @NSManaged public var usageDescription: String?
+
+ // usageDescription must be non-optional for backwards compatibility,
+ // so we store non-optional value and provide public accessor with optional return type.
+ @nonobjc public var usageDescription: String? {
+ get { _usageDescription.isEmpty ? nil : _usageDescription }
+ set { _usageDescription = newValue ?? "" }
+ }
+ @NSManaged @objc(usageDescription) private var _usageDescription: String
@nonobjc public var permission: any ALTAppPermission {
switch self.type