

単純にTargetのSigning & CapabilitiesでCloudKitのチェックを外した。  
アプリを立ち上げると直ぐに以下のメッセージがコンソールに表示される。

[code]

    [error] fault: Store opened without NSPersistentHistoryTrackingKey but previously had been opened with NSPersistentHistoryTrackingKey - Forcing into Read Only mode
    
[/code]

history tracking optionをONに戻せば良いらしいのだが、どこで設定するのか不明。  
（そもそも明示的にOFFにした覚えはない）  
お分かりの方がいらっしゃいましたら、ご教授ください。  
よろしくお願いいたします。


CC BY-SA 4.0
2021-11-04T02:04:45.977
83417
2021-11-05T04:14:37.600
2021-11-04T04:55:10.663
3060
48690
question
swift xcode
iOSアプリを作っており、CoreData + CloudKitとしていたが、CloudKitのチェックを外したところ、CoreDataのデータがRead Onlyとなってしまった


このような現象を報告されるのであれば、ターゲットのiOSバージョン、Xcodeのバージョン、どのように元プロジェクトを作ったのか、など、あなたの現在のプロジェクトがどのようなものなのかがわかる情報を、可能な限り詳しく記述した方が回答が付きやすく、得られる回答もあなたのプロジェクトで即適用可能なものになりやすいでしょう。

* * *

「Core Data + CloudKitとしていた」がプロジェクト作成時に以下のようにしていたと仮定します。

[![新規プロジェクト画面](https://i.stack.imgur.com/Bdm6V.png)](https://i.stack.imgur.com/Bdm6V.png)

この場合、プロジェクト作成時に生成されるコード自体がCore Dataのみを指定した場合とは異なっています。

### AppDelegate.swift

(Core Data + CloudKit、抜粋)

[code]

        lazy var persistentContainer: NSPersistentCloudKitContainer = {
            /*
             The persistent container for the application. This implementation
             creates and returns a container, having loaded the store for the
             application to it. This property is optional since there are legitimate
             error conditions that could cause the creation of the store to fail.
            */
            let container = NSPersistentCloudKitContainer(name: "CoreDataCloudKitSample")
            container.loadPersistentStores(completionHandler: { (storeDescription, error) in
                if let error = error as NSError? {
                    // Replace this implementation with code to handle the error appropriately.
                    // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
                     
                    /*
                     Typical reasons for an error here include:
                     * The parent directory does not exist, cannot be created, or disallows writing.
                     * The persistent store is not accessible, due to permissions or data protection when the device is locked.
                     * The device is out of space.
                     * The store could not be migrated to the current model version.
                     Check the error message to determine what the actual problem was.
                     */
                    fatalError("Unresolved error \(error), \(error.userInfo)")
                }
            })
            return container
        }()
    
[/code]

### AppDelegate.swift

(Core Dataのみ、抜粋)

[code]

        lazy var persistentContainer: NSPersistentContainer = {
            /*
             The persistent container for the application. This implementation
             creates and returns a container, having loaded the store for the
             application to it. This property is optional since there are legitimate
             error conditions that could cause the creation of the store to fail.
            */
            let container = NSPersistentContainer(name: "CoreDataSample")
            container.loadPersistentStores(completionHandler: { (storeDescription, error) in
                if let error = error as NSError? {
                    // Replace this implementation with code to handle the error appropriately.
                    // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
                     
                    /*
                     Typical reasons for an error here include:
                     * The parent directory does not exist, cannot be created, or disallows writing.
                     * The persistent store is not accessible, due to permissions or data protection when the device is locked.
                     * The device is out of space.
                     * The store could not be migrated to the current model version.
                     Check the error message to determine what the actual problem was.
                     */
                    fatalError("Unresolved error \(error), \(error.userInfo)")
                }
            })
            return container
        }()
    
[/code]

* * *

ご自身でCore Data + CloudKitと、Core Dataのみのプロジェクトを作成してみて、違いがある部分を「Core
Dataのみのプロジェクト」に合わせて修正してみてください。


CC BY-SA 4.0
2021-11-05T04:14:37.600
83437
2021-11-05T04:14:37.600
13972
83417
answer