diff --git a/iOS/MonsterCards.xcodeproj/project.pbxproj b/iOS/MonsterCards.xcodeproj/project.pbxproj index a57342e..513e294 100644 --- a/iOS/MonsterCards.xcodeproj/project.pbxproj +++ b/iOS/MonsterCards.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ E20CEFEC261FEA2100B55D72 /* MonsterDetailWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20CEFEB261FEA2100B55D72 /* MonsterDetailWrapper.swift */; }; E20CEFFA261FEBBA00B55D72 /* MonsterDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E257100825B1B2470055B23B /* MonsterDetailView.swift */; }; E20CF000261FEBD300B55D72 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = E20CEFFF261FEBD300B55D72 /* MarkdownUI */; }; + E20CF00E261FF38600B55D72 /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E20CF00D261FF38600B55D72 /* CloudKit.framework */; }; E210B83A25B42D980083EAC5 /* MCProficiencyPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E210B83925B42D980083EAC5 /* MCProficiencyPicker.swift */; }; E210B83F25B42DAB0083EAC5 /* MCAdvantagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E210B83E25B42DAB0083EAC5 /* MCAdvantagePicker.swift */; }; E21661D12616E9A800117782 /* ImportMonster.swift in Sources */ = {isa = PBXBuildFile; fileRef = E21661D02616E9A800117782 /* ImportMonster.swift */; }; @@ -147,6 +148,8 @@ E20209F925D8E19100EFE733 /* SkillViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SkillViewModel.swift; sourceTree = ""; }; E20209FA25D8E19100EFE733 /* MonsterViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MonsterViewModel.swift; sourceTree = ""; }; E20CEFEB261FEA2100B55D72 /* MonsterDetailWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MonsterDetailWrapper.swift; sourceTree = ""; }; + E20CF008261FF37700B55D72 /* MonsterCards.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = MonsterCards.entitlements; sourceTree = ""; }; + E20CF00D261FF38600B55D72 /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; }; E210B83925B42D980083EAC5 /* MCProficiencyPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCProficiencyPicker.swift; sourceTree = ""; }; E210B83E25B42DAB0083EAC5 /* MCAdvantagePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCAdvantagePicker.swift; sourceTree = ""; }; E21661D02616E9A800117782 /* ImportMonster.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportMonster.swift; sourceTree = ""; }; @@ -231,6 +234,7 @@ buildActionMask = 2147483647; files = ( E254F901260D07C1009295A5 /* MarkdownUI in Frameworks */, + E20CF00E261FF38600B55D72 /* CloudKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -267,6 +271,7 @@ E216E47C261FE76F00FD9262 /* Frameworks */ = { isa = PBXGroup; children = ( + E20CF00D261FF38600B55D72 /* CloudKit.framework */, E216E47D261FE76F00FD9262 /* QuickLook.framework */, ); name = Frameworks; @@ -308,6 +313,7 @@ E2570FB725B1AC520055B23B /* MonsterCards */ = { isa = PBXGroup; children = ( + E20CF008261FF37700B55D72 /* MonsterCards.entitlements */, E2570FBC25B1AC550055B23B /* Assets.xcassets */, E2D473FB25B5328800CB36D7 /* Helpers */, E2570FC625B1AC550055B23B /* Info.plist */, @@ -891,6 +897,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = MonsterCards/MonsterCards.entitlements; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_ASSET_PATHS = "\"MonsterCards/Preview Content\""; DEVELOPMENT_TEAM = J793L9LQJ2; @@ -914,6 +921,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = MonsterCards/MonsterCards.entitlements; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_ASSET_PATHS = "\"MonsterCards/Preview Content\""; DEVELOPMENT_TEAM = J793L9LQJ2; diff --git a/iOS/MonsterCards/Info.plist b/iOS/MonsterCards/Info.plist index 3e32107..b96fa7a 100644 --- a/iOS/MonsterCards/Info.plist +++ b/iOS/MonsterCards/Info.plist @@ -2,14 +2,27 @@ - CFBundleIconName - AppIcon - UIUserInterfaceStyle - Light CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) + CFBundleDocumentTypes + + + CFBundleTypeIconFiles + + CFBundleTypeName + Monster Data + LSHandlerRank + Owner + LSItemContentTypes + + com.majinnaibu.MonsterCards.Monster + + + CFBundleExecutable $(EXECUTABLE_NAME) + CFBundleIconName + AppIcon CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion @@ -24,6 +37,8 @@ 1 LSRequiresIPhoneOS + LSSupportsOpeningDocumentsInPlace + UIApplicationSceneManifest UIApplicationSupportsMultipleScenes @@ -31,6 +46,10 @@ UIApplicationSupportsIndirectInputEvents + UIBackgroundModes + + remote-notification + UILaunchScreen UIRequiredDeviceCapabilities @@ -52,23 +71,8 @@ UISupportsDocumentBrowser - LSSupportsOpeningDocumentsInPlace - - CFBundleDocumentTypes - - - CFBundleTypeIconFiles - - CFBundleTypeName - Monster Data - LSHandlerRank - Owner - LSItemContentTypes - - com.majinnaibu.MonsterCards.Monster - - - + UIUserInterfaceStyle + Light UTExportedTypeDeclarations diff --git a/iOS/MonsterCards/Models/Monster+CoreDataClass.swift b/iOS/MonsterCards/Models/Monster+CoreDataClass.swift index 2b707cb..328e927 100644 --- a/iOS/MonsterCards/Models/Monster+CoreDataClass.swift +++ b/iOS/MonsterCards/Models/Monster+CoreDataClass.swift @@ -19,8 +19,7 @@ public class Monster: NSManagedObject { self.subtype = subtype; self.alignment = alignment; } - - // MARK: Armor + // MARK: Armor var armorTypeEnum: ArmorType { get { diff --git a/iOS/MonsterCards/Models/MonsterViewModel.swift b/iOS/MonsterCards/Models/MonsterViewModel.swift index 2d8f8b9..cf0c52e 100644 --- a/iOS/MonsterCards/Models/MonsterViewModel.swift +++ b/iOS/MonsterCards/Models/MonsterViewModel.swift @@ -305,7 +305,6 @@ class MonsterViewModel: ObservableObject { } } - // MARK: Armor var armorClassDescription: String { @@ -382,7 +381,6 @@ class MonsterViewModel: ObservableObject { } // MARK: Challenge Rating / Proficiency Bonus - var proficiencyBonus: Int { switch challengeRating { diff --git a/iOS/MonsterCards/MonsterCards.entitlements b/iOS/MonsterCards/MonsterCards.entitlements new file mode 100644 index 0000000..90aa826 --- /dev/null +++ b/iOS/MonsterCards/MonsterCards.entitlements @@ -0,0 +1,16 @@ + + + + + aps-environment + development + com.apple.developer.icloud-container-identifiers + + iCloud.com.majinnaibu.MonsterCards.MonsterCards + + com.apple.developer.icloud-services + + CloudKit + + + diff --git a/iOS/MonsterCards/Persistence.swift b/iOS/MonsterCards/Persistence.swift index 6cc6b14..3130ab0 100644 --- a/iOS/MonsterCards/Persistence.swift +++ b/iOS/MonsterCards/Persistence.swift @@ -36,6 +36,7 @@ struct PersistenceController { if inMemory { container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null") } + container.viewContext.automaticallyMergesChangesFromParent = true container.loadPersistentStores(completionHandler: { (storeDescription, error) in if let error = error as NSError? { fatalError("Unresolved error \(error), \(error.userInfo)")