您的位置:首页 > 移动开发 > IOS开发

iphone开发:为已经建立的项目添加coredata

2015-07-12 11:35 357 查看
1.  添加core data framework 

xcode中选中项目根,在右边的面板中选中targets下面的项目名,再在右边选中 Build Phases, 再选中Link Binary with Libraries,  点加号添加core data 框架

 

   在项目中找一个xx.pch的文件, 加上一行      #import 

2. 在项目的XXXAppDelegate.h 文件中 加入

@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;

@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;

@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (void)saveContext;

 

- (NSURL *)applicationDocumentsDirectory;

XXXAppDelegate.m文件中加入

@synthesize managedObjectContext=__managedObjectContext;//session

@synthesize managedObjectModel=__managedObjectModel;

@synthesize persistentStoreCoordinator=__persistentStoreCoordinator;

//相当与持久化方法

- (void)saveContext

{

    NSError *error = nil;

    NSManagedObjectContext *managedObjectContext = self.managedObjectContext;

    if (managedObjectContext != nil)

    {

        if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])

        {

           

            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);

            abort();

        } 

    }

}

#pragma mark - Core Data stack

 

//初始化context对象

- (NSManagedObjectContext *)managedObjectContext

{

    if (__managedObjectContext != nil)

    {

        return __managedObjectContext;

    }

    

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];

    if (coordinator != nil)

    {

        __managedObjectContext = [[NSManagedObjectContext alloc] init];

        [__managedObjectContext setPersistentStoreCoordinator:coordinator];

    }

    return __managedObjectContext;

}

 

- (NSManagedObjectModel *)managedObjectModel

{

    if (__managedObjectModel != nil)

    {

        return __managedObjectModel;

    }

//这里的URLForResource:@"lich" 的url名字(lich)要和你建立datamodel时候取的名字是一样的,至于怎么建datamodel很多教程讲的很清楚

    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"lich" withExtension:@"momd"];

    __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];    

    return __managedObjectModel;

}

 

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator

{

    if (__persistentStoreCoordinator != nil)

    {

        return __persistentStoreCoordinator;

    }

    //这个地方的lich.sqlite名字没有限制,就是一个数据库文件的名字

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"lich.sqlite"];

    

    NSError *error = nil;

    __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

    if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])

    {

       

        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);

        abort();

    }    

    

    return __persistentStoreCoordinator;

}

#pragma mark - Application's Documents directory

 

- (NSURL *)applicationDocumentsDirectory

{

    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];

}

以上只是简单的把coredata添加到了项目中去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios iphone开发