<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 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評(píng)論 :: 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 閱讀(321) 評(píng)論(0)  編輯  收藏 所屬分類: iPhone
    主站蜘蛛池模板: 亚洲香蕉免费有线视频| 久久精品国产亚洲AV久| 一级毛片人与动免费观看| 日韩版码免费福利视频| 亚洲欧洲免费视频| 久久免费视频网站| 亚洲AV成人一区二区三区AV| 久久精品亚洲中文字幕无码麻豆| a毛片全部免费播放| 亚洲AV成人片色在线观看高潮 | 亚洲第一成年网站视频| 午夜两性色视频免费网站| 亚洲熟妇AV一区二区三区宅男| 成人福利在线观看免费视频| 又爽又高潮的BB视频免费看| 五月天婷婷精品免费视频| 伊人久久大香线蕉亚洲五月天 | 亚洲精品免费在线视频| 日韩毛片一区视频免费| 国产亚洲精品不卡在线| 日本高清免费观看| 久久久久久久亚洲精品| 特级精品毛片免费观看| 亚洲国产成人久久综合碰| 国产精品视频全国免费观看| 亚洲AV乱码久久精品蜜桃| 日韩欧毛片免费视频| 国产青草亚洲香蕉精品久久| 国产亚洲一区二区三区在线不卡| 久操免费在线观看| 亚洲性无码AV中文字幕| 国产专区一va亚洲v天堂| 100部毛片免费全部播放完整| 四虎亚洲精品高清在线观看| 亚洲国产综合无码一区二区二三区 | 男人免费视频一区二区在线观看 | 狠狠色婷婷狠狠狠亚洲综合| 四虎影视在线影院在线观看免费视频| 亚洲人成电影网站| 国产成人精品日本亚洲专区61| 国产92成人精品视频免费|