美文网首页
干掉项目中的 CoreData.xcdatamodel

干掉项目中的 CoreData.xcdatamodel

作者: SunnyEver0 | 来源:发表于2016-11-08 00:14 被阅读128次

1. CoreData.xcdatamodel

  • 这个文件是在使用coredata轻量数据库时,Xcode自动生成的文件,经查看相应数据发现,这个文件的用途及在于创建NSManagedObjectModel这个对象(即我们需要使用的数据模型),在Xcode中自己加载这个数据模型,是在appdelegate.m生成并采用的下面这段代码:
- (NSManagedObjectModel *)managedObjectModel {
    // The managed object model for the application. It is a fatal error for the application not to be able to find and load its model.
    if (_managedObjectModel != nil) {
        return _managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"CoreData" withExtension:@"momd"];
    _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    return _managedObjectModel;
}

从这段代码里面我们可以看到这个CoreData.xcdatamodel文件只是用于生成相应的
NSManagedObjectModel,所以我们可不可以用代码尝试实现呢?

- (NSManagedObjectModel *)managedObjectModel {
    // The managed object model for the application. It is a fatal error for the application not to be able to find and load its model.
    if (_managedObjectModel != nil) {
        return _managedObjectModel;
    }
    /**< 以前的初始化方式 */
//    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"CoreData" withExtension:@"momd"];
//    _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    /**< 手动初始化方式 */
    _managedObjectModel = [[NSManagedObjectModel alloc] init];
   /**< 初始化实例数组 */
    NSMutableArray *entities = [NSMutableArray array];
   /**< 初始化单个实例对象 */
    NSEntityDescription *description = [[NSEntityDescription alloc] init];;
    [description setName:@"Teacher"];
    [description setManagedObjectClassName:@"Teacher"];
    NSArray *attributesArray = [NSArray array];
    NSAttributeDescription *name = [[NSAttributeDescription alloc] init];
    [name setName:@"name"];
    [name setAttributeType:NSStringAttributeType];
    NSAttributeDescription *age = [[NSAttributeDescription alloc] init];
    [age setName:@"age"];
    [age setAttributeType:NSStringAttributeType];
    NSAttributeDescription *address = [[NSAttributeDescription alloc] init];
    [address setName:@"address"];
    [address setAttributeType:NSStringAttributeType];
    NSAttributeDescription *phone = [[NSAttributeDescription alloc] init];
    [phone setName:@"phone"];
    [phone setAttributeType:NSStringAttributeType];
    attributesArray = @[name,age,address,phone];
    description.properties =  attributesArray;
    [entities addObject:description];
    _managedObjectModel.entities = entities;
    NSLog(@"%@",_managedObjectModel.description);
    return _managedObjectModel;
}

这样初始化NSManagedObjectModel之后我们就可以不用项目中的xcdatamodel文件了。项目的集成度更加的高了。

相关文章

  • 干掉项目中的 CoreData.xcdatamodel

    1. CoreData.xcdatamodel 这个文件是在使用coredata轻量数据库时,Xcode自动生成的...

  • 手机会惹祸

    手机干掉了谁? 干掉了电视机,干掉了电脑,干掉了手表,干掉了座机,干掉了照相机,干掉了收音机,干掉了手电筒,干掉了...

  • 手机是罪魁祸首

    手机干掉了谁?干掉了电视机,干掉了电脑,干掉了手表,干掉了座机,干掉了照相机,干掉了收音机,干掉了手电筒,干掉了镜...

  • 出门三大件

    有人说:手机干掉了电视机,干掉了电脑,干掉了手表,干掉了座机,干掉了照相机,干掉了收音机,干掉了手电筒,干掉了镜子...

  • ios - 纯代码创建collectionViewControl

    首先干掉这三个文件 创建CollectionViewController 以及在项目中如下设置一下: 也就是清空M...

  • 护眼从现在开始

    手机在过去的一些年干掉了谁[疑问] 干掉了座机,干掉了照相机,干掉了收音机,干掉了手电筒,干掉了镜子,干掉了报纸,...

  • 改名与冬季计划出游被挨宰

    手机这些年到底干掉了谁?它干掉了座机,干掉了收音机,干掉了照相机,干掉了电视机,干掉了电脑,干掉了手电筒,干掉了镜...

  • 学会深度工作

    “手机啊手机,你真行。 你干掉了电视机,干掉了电脑,干掉了手表,干掉了座机,干掉了照相机,干掉了收音机,干掉了手...

  • 互联网时代下的深度工作

    “手机啊手机,你真行。 你干掉了电视机,干掉了电脑,干掉了手表,干掉了座机,干掉了照相机,干掉了收音机,干掉了手电...

  • JAVA小项目-管家婆记账本介绍(1)

    今日内容介绍1、管家婆项目 01项目训练目标 02项目中的功能模块 03技术的选择和相关jar包 04项目中的工具...

网友评论

      本文标题:干掉项目中的 CoreData.xcdatamodel

      本文链接:https://www.haomeiwen.com/subject/yqhnuttx.html