coredata - deliver / setup default data

邮差的信 提交于 2019-11-30 09:26:26

问题


I use coreData in my iOS App. It's possible, that the user Add, Delete Data into the Database. I have to deliver default data ( some different data-sets ). At the moment, I'm creating the database by first Application launch. I read data from a csv file an create the database with it. The csv is in the Application sandbox; the coreData (managedDocument) is in ApplicationDocument (creation on runtime...).

It works perfect for me - but I ask me, will Apple allow that, if I push the App to the AppStore?


回答1:


There is nothing wrong with this approach and it can't be a reason for rejection. There is also another way to do it. You can create the database the way you do it now, copy the .sqlite file and provide it as your default database. Then copy it on app first run. The following code will do it:

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent: @"YourDBName.sqlite"];
    if (![fileManager fileExistsAtPath:storeURL.path]) {
        NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"YourDBName" ofType:@"sqlite"];
        if (defaultStorePath) {
            [fileManager copyItemAtPath:defaultStorePath toPath:storeURL.path error:NULL];
        }
    }

With this approach you will not need to include your csv file in your bundle.




回答2:


Yes, apple does allow shipping a database populated by default. the standard way to do it is to ship a default database in your bundle, then at launch time check if there is a database in your application documents directory, and if it does not exist, then copy the database from your bundle to the documents directory.



来源:https://stackoverflow.com/questions/11922800/coredata-deliver-setup-default-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!