<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

    I was recently re-writing a yet to be published iPhone app to use Core Data with a pre-populated SQLite database. I was able to get the app to function with a new database using the CoreDataBooks sample code as a reference but could not get the app to read a pre-populated database added to the project.

    After many hours of troubleshooting, I discovered differences in the pre-populated database and a Core Data created SQLite database. The pre-populated database consisted of just my simple 1 table structure and the Core Data created SQLite database consisted of “extra ‘Z’ tables’ For example: Z_METADATA, I searched the Internet and Apple docs but could not find a utility or any other way to convert or prep a pre-populated SQLite database for use with Core Data.

    Right or wrong. Here’s what I finally did (NOTE: All the ‘coding’ is based on the CoreDataBooks sampe):

    In XCode:

    1. Ensure the CoreData framework is added to your project.

    image

    ** If creating a new project, check the ‘Use Core Data for storage’ option when selecting a template.

    image

    2. Create the Data Model file (xcdatamodel) if not already created.

    a. Click File | New File.

    b. Choose iPhone OS | Resource | Data Model

    image

    c. Click Next, name the file and click Next again.

    d. If the model class is already created, select it from   the  next window. You can create it later if it isn’t created already.

    image

    2. Add an Entity (table name) and bind it to the class.

    a. Click Design | Data Model | Add Entity

    b. Rename Entity to the table name you wish to create and change the Class to the desired class name.

    image

    3. Create the Attributes (columns).

    a. Click Design | Data Model | Add Attribute

    b. Rename newAttribute to the desired column name and set the type.

    image

    c. Repeat step b for each additional attribute.

    image

    4. Set the name of the SQLite database name and location in the AppDelegate.m file (Please refer to the CoreDataBooks sample code for further info).

    - (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
    if (persistentStoreCoordinator != nil) {
    return persistentStoreCoordinator;
    }
    NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @”CoreData.sqlite”];
    /*
    Set up the store.
    For the sake of illustration, provide a pre-populated default store.
    */
    NSFileManager *fileManager = [NSFileManager defaultManager];
    // If the expected store doesn’t exist, copy the default store.
    if (![fileManager fileExistsAtPath:storePath]) {
    NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@”CoreData” ofType:@”sqlite”];
    if (defaultStorePath) {
    [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
    }
    }

    NSURL *storeUrl = [NSURL fileURLWithPath:storePath];
    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];

    NSError *error;
    if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
    // Update to handle the error appropriately.
    NSLog(@”Unresolved error %@, %@”, error, [error userInfo]);
    exit(-1);  // Fail
    }
    return persistentStoreCoordinator;
    }

    5. Build and Run the app.

    In Finder:

    1. Use Spotlight to search for the SQLite database created by the app in the iPhone Simulator. This is /Users/<Username>/Library/Application Support/iPhone Simulator/User/Application/<Application GUID>/Documents/<database name.sqlite>

    2. Copy that database to a working folder.

    3. Populate that database.

    4. Add the populated database to the project.

    I hope this helps! If anyone has a better or preferred way of formatting a SQLite database for use with Core Data, please let me know.

    posted on 2010-09-29 14:43 seal 閱讀(317) 評論(0)  編輯  收藏 所屬分類: iPhone
    主站蜘蛛池模板: 亚洲av不卡一区二区三区 | 国产h肉在线视频免费观看| 亚洲中文字幕在线第六区| 国产福利免费视频 | 久久国产乱子伦精品免费午夜| 免费成人av电影| 丰满少妇作爱视频免费观看| 人人狠狠综合久久亚洲高清| jizz免费在线影视观看网站| 亚洲熟妇无码另类久久久| 成人精品一区二区三区不卡免费看| 亚洲成a人片在线观看无码| 久艹视频在线免费观看| 久久久久亚洲AV片无码下载蜜桃| www视频在线观看免费| 精品无码专区亚洲| 亚洲国产香蕉人人爽成AV片久久 | 亚洲天堂中文字幕在线观看| 免费99精品国产自在现线| 亚洲码和欧洲码一码二码三码 | 亚洲AV日韩综合一区尤物| 国产精品无码素人福利免费| 免费人成在线观看播放a| 亚洲啪啪AV无码片| 免费A级毛片无码A∨免费| 亚洲国产乱码最新视频| mm1313亚洲精品无码又大又粗 | 成人最新午夜免费视频| 男女男精品网站免费观看| 亚洲av丰满熟妇在线播放 | 亚洲欧洲精品成人久久曰影片| 久久久久国产精品免费网站| 亚洲国产精品免费观看| 亚洲日韩欧洲乱码AV夜夜摸| 国产成人免费在线| 国产亚洲日韩在线a不卡| 亚洲av日韩av无码| 国产又大又长又粗又硬的免费视频| 伊人免费在线观看高清版| 亚洲av乱码一区二区三区| 亚洲日韩在线第一页|