我们一起学MAC编程吧(2) CoreData入门

关于Coredata我已经看了几天了。看不不少别人写的文章,可以说,到今天为止,我仍未弄明白。

       还是跟随苹果的例子来吧,看看能有什么发现。首先需要建立一种概念,Coredata是数据存储,它并不是真的数据库,因此它存储的主要内容是对象本身-想象一下nib文件就是Coredata数据,当然它也可以用来保存纯数据。

    1. Coredata 模型

     如果你学过数据库,或者哪怕是foxpro你对数据库就有了一个粗略的印象。数据库是由一个或多个表组成的,所谓的CoreData模型,你可以理解成数据库,你也可以建立多个表--这里称为 entity,他们有字段,这里叫做属性,每个属性有类型信息--它似乎没有字段长度的感念,管它呢。比如SQL Sever CoreData的不同之处,在于它将那些表的定义单独提出来了,构成一个扩展名为xcdatamodeld 的文件。你可以在IB里面编辑它,也可以编程来处理。

 要得到保存在文件中的CoreData数据,第一步要做的就是调入模型,调入也好,编程动态建立也好。负责模型的这个类是:NSManagedObjectModel,需要有一个这样的对象,对模型进行管理。

 接下来,建立一个存放数据的类,。这个类的类名是NSManagedObjectContext,也就是说,如果从一个已经存在的CoreData数据文件,得到数据,数据将从文件调入,并保存在NSManagedObjectContext的类对象里面。看看下面的例子。


int main (int argc, const char * argv[])

    NSManagedObjectModel *mom = managedObjectModel();

    NSLog(@"mom: %@", mom);

    if (applicationLogDirectory() == nil) {

        NSLog(@"Could not find application logs directory\nExiting...");

        exit(1);

    }

    NSManagedObjectContext *moc = managedObjectContext();

    NSEntityDescription *runEntity = [[mom entitiesByName] objectForKey:@"Peoples"];

    Person *person = [[Person alloc] initWithEntity:runEntity insertIntoManagedObjectContext:moc];

    person.personID = @“123”;

    person。name @“wang


    NSError *error;

    if (![moc save: &error]) {

        NSLog(@"Error while saving\n%@",

            ([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error");

        exit(1);

    }

    return 0;

}


这段代码相当受启发。为了理解方便,上面的代码我改动了一点内容。它的主要作用是,首先,建立一个NSManagedObjectModel对象。然后建立管理内容数据的类: NSManagedObjectContext,并且为这个对象建立模型(也就是表定义),这样它才知道能够处理什么样的数据,我们这里是Person。

          接下来,程序建立了一个Person 对象, 并设定了必要的属性。 insertIntoManagedObjectContext:moc 将这个新建的Pseson插入到内容对象里面,内容对象因此有了内容。最后,将内容文件的内容保存,形成有数据的CoreData文件。

         至于上面的程序是否正确,文件存到哪里去了。我们以后再探讨。这一节,我们毕竟弄明白了一个基本的机制, NSManagedObjectModel和 NSManagedObjectContext 对象的作用。

         这一节内容有点少,但是并不单薄, 我希望你自己去找资料看看。CoreData毕竟太重要了,无论你做了什么总要保存吧。下一个节我会尝试做一个例子,来演示CoreData的处理过程。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值