Thomas
Thomas

Reputation: 330

coredata - deliver / setup default data

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?

Upvotes: 2

Views: 441

Answers (2)

Adam
Adam

Reputation: 26917

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.

Upvotes: 2

Jesse Crocker
Jesse Crocker

Reputation: 873

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.

Upvotes: 0

Related Questions