<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      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 閱讀(316) 評論(0)  編輯  收藏 所屬分類: iPhone
    主站蜘蛛池模板: 免费播放特黄特色毛片| 亚洲国产精品lv| 在线看片免费人成视频福利| 亚洲成人在线免费观看| 国产美女无遮挡免费网站| a级毛片黄免费a级毛片| 久久夜色精品国产噜噜亚洲a| 亚洲性久久久影院| 麻豆最新国产剧情AV原创免费 | 特级毛片A级毛片100免费播放| 亚洲欧洲无码AV电影在线观看| 免费A级毛片无码无遮挡内射| 一区二区三区免费视频播放器| 亚洲精品午夜视频| 亚洲伊人久久成综合人影院| 国产大片线上免费观看| 成年女人A毛片免费视频| 亚洲中文字幕无码爆乳| 亚洲国产精品无码久久久不卡| 日本不卡高清中文字幕免费| 99精品一区二区免费视频| 手机永久免费的AV在线电影网| 亚洲国产理论片在线播放| 亚洲片一区二区三区| 最近最新中文字幕完整版免费高清 | 99热在线精品免费全部my| 中文字幕版免费电影网站| 亚洲国产av玩弄放荡人妇| 久久亚洲精品无码aⅴ大香| 久久久久亚洲AV无码专区网站| 毛片a级三毛片免费播放| 最近2019免费中文字幕6| 四虎影视无码永久免费| 国产尤物在线视精品在亚洲| 亚洲人成综合网站7777香蕉| 亚洲男人天堂2017| 日韩亚洲一区二区三区| 久久国产成人精品国产成人亚洲| 永久免费看bbb| 美女黄网站人色视频免费国产| 亚洲三级高清免费|