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

来源:互联网 发布:微信一键转发软件苹果 编辑:程序博客网 时间:2024/06/05 00:46

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添加到了项目中去。

0 0
原创粉丝点击