zoukankan      html  css  js  c++  java
  • ios coredata 老代码备用参考

    iPhone OS在2009年6月份推出3.0版本SDK,其中一个特性是引入了Mac SDK中的core data。是一种ORM(Object Relationships Mapping)解决方案,类似java的Hibernate。

    有了这个,就不必像ios简单sqlite使用那样编写繁琐代码了,减少工作量,也可以回避使用c的语法,降低ios开发的技术门槛。总之,可降低开发成本,提高项目质量。

    本文在很大程度上参考了《Core Data Tutorial for iOS》

    创建ios项目

    为了方便,直接用xcode工具向导创建项目,这样可以自动集成core data的支持。

    image

    不一定创建window-based项目,split view-based也可以,用于ipad项目,或者对于iphone的navigation-based项目亦可。

    创建实体

    比如java里的实例需要编写java类和对应的mapping文件(也可能是注解)。在ios里,需要两步:

    • 图形界面的设计工具,设计实体、实体属性和实体的关系
    • 生成实体的类,也就是对应的.h和.m文件

    创建的项目比如叫aaa,那么找到aaa.xcdatamodel:

    image

    双击它,可调出模型编辑器。创建一个Person实体。

    image

    点击上图的加号创建一个新的实体(entity),然后在entity的文本框中填写实体名称。回车就可以看到下面类似uml类图的图形名称变为Person。

    然后创建属性:

    image

    点击属性部分的加号,选择Add Attribute,增加一个id,数字的:

    image

    然后,设置为自增列:

    image

    再设置个name属性:

    image

    如果有多个实体,继续创建,或者创建它们之间的关系。

    然后,生成实体类,供编写程序时调用。

    创建新文件,注意要在实体编辑器界面,可以选中Person实体,这样生成的文件名就是Person:

    image

    选择 managed object class:

    image

    然后:

    image

    然后选中需要的实体,finish:

    image

    在项目中生成了实体类:

    image

    在代码中使用实体

    首先,需要在使用Person实例类的代码头文件中加入:

    #import <UIKit/UIKit.h> 
    #import <CoreData/CoreData.h> 
    #import "Person.h"

    使用core data的简单代码,创建一个Person实体实例,保存它,然后遍历数据,相当于:select * from persons:

    NSLog(@">>start app "); 
    Person *person=(Person *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:[self managedObjectContext]]; 
    person.name=@"张三";

    NSError *error;

    if (![[self managedObjectContext] save:&error]) { 
        NSLog(@"error!"); 
    }else { 
        NSLog(@"save person ok."); 
    }

    NSFetchRequest *request=[[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity=[NSEntityDescription entityForName:@"Person" inManagedObjectContext:[self managedObjectContext]]; 
    [request setEntity:entity];

  • 相关阅读:
    接口框架 python+unittest+request+HTMLTestRunner
    python循环语句的简单条件语句、多重条件语句和嵌套条件语句编写
    MAC下配置java+jmeter环境变量
    jmeter _Random函数生成随机数
    python-unittest模块中的各类断言
    Django密码错误报错提醒
    转载Django 500,404,400错误修改优化
    postman从body,headers,data中获取token后回写做全局变量
    postman小白教程
    git拉取代码切换分支
  • 原文地址:https://www.cnblogs.com/isItOk/p/4875706.html
Copyright © 2011-2022 走看看