<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
    主站蜘蛛池模板: 亚洲一区二区三区偷拍女厕 | 国产V片在线播放免费无码| 免费理论片51人人看电影| 亚洲人色大成年网站在线观看| 99视频精品全部免费观看| 亚洲综合久久综合激情久久| 91免费国产精品| 国产精品亚洲精品青青青| 免费看国产成年无码AV片| 亚洲人成无码网站在线观看| 性做久久久久免费观看| 丰满妇女做a级毛片免费观看| 久久亚洲精品无码播放| 国产拍拍拍无码视频免费| 亚洲国产美国国产综合一区二区| 日韩午夜理论免费TV影院| 亚洲六月丁香婷婷综合| 情侣视频精品免费的国产| 国产免费牲交视频免费播放| 亚洲AV综合色区无码一区爱AV| 99久久免费观看| 亚洲综合小说另类图片动图 | 亚洲国产综合精品中文字幕| h视频在线观看免费| 亚洲电影免费在线观看| 无码国产精品一区二区免费| 日本系列1页亚洲系列| 亚洲国产三级在线观看| 无人在线直播免费观看| 免费无遮挡无遮羞在线看| 亚洲国产精品一区二区成人片国内 | 国产亚洲A∨片在线观看| 亚洲免费观看在线视频| 色噜噜噜噜亚洲第一| 亚洲五月午夜免费在线视频| 无码囯产精品一区二区免费 | 男男gay做爽爽的视频免费| 在线亚洲精品自拍| 亚洲人成免费电影| 一级特黄a免费大片| 亚洲91精品麻豆国产系列在线|