iOS的CoreData用法

转自:http://www.2cto.com/kf/201403/283806.html

CoreData以前没用过,最近试用了一下,感觉省了好多的代码,很方便。当然,也只是会使用。

首先来创建一个工程  \
系统默认会给你增加一些东西,至于这些东西具体干嘛使的,自己去谷歌找找,说了,我只会使用。 在工程目录下有一个.xcdatamodeld的文件,这就是CZ喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcmVEYXRhtcTW2LXjwcuho7/J0tTU2tXiwO/D5sztvNPSu9CpTW9kZWxkus3F5NbDTW9kZWxktcTK9NDUoaM8YnI+CgrU2nhjZGF0YW1vZGVsZLXE1/PPwr3HQWRkIEVudGl0ec/gtbHT2rS0vajSu7j2yv2+3cSj0M3Sss/gtbHT2tTayv2+3b/itLS9qMHL0rvVxbHtoaM8aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20140306/2014030614011142.jpg" alt="\">
现在我们创建一个名Dog的Modeld。同时,这个名字的首字母要大写。 接下来我们来配置这个Dog的一些属性。点击+号添加属性,Type可以选择属性的类型。  \
然后在Editor里点击CreateNSManagedObject SubClass...选择Dog,然后Create就会多出一个Dog类。
\ 当然,我们完没有必要在意这些东西。 
现在就是使用这个东西了,好吧,我承认这一块不太会描述,因为我的数据库学的不太好。 在创建工程的时候,他会自动在AppDelegate里描述一个属性。 \
我们就是使用NSManagedObjectContext来对文件的增删改查的操作。 首先,我们来插入一条数据。别忘了导入Dog的头文件,虽然这是常识。
创建一个Dog对象。(@(1) == [NSNumbernumberWithInt:1];)
?
1
2
3
4
5
Dog *dog = [NSEntityDescription insertNewObjectForEntityForName:@ "Dog" inManagedObjectContext:self.managedObjectContext];
    
    [dog setName:@ "花花" ];
    [dog setAge:@( 1 )];
    [dog setSex:@( 0 )];
保存
?
1
2
3
4
5
6
7
8
NSError *error = nil;
BOOL isSave =   [self.managedObjectContext save:&error];
if (!isSave) {
     NSLog(@ "error:%@,%@" ,error,[error userInfo]);
}
else {
     NSLog(@ "保存成功" );
}

然后就是查询这个表的数据,描述一个可变数组来保存他们。
?
1
@property (strong, nonatomic) NSMutableArray *dataArray;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//创建取回数据请求
   NSFetchRequest *request = [[NSFetchRequest alloc] init];
   //设置要检索哪种类型的实体对象
   NSEntityDescription *entity = [NSEntityDescription entityForName:@ "Dog" inManagedObjectContext:self.managedObjectContext];
   //设置请求实体
   [request setEntity:entity];
   //指定对结果的排序方式
   NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@ "name" ascending:NO];
   NSArray *sortDescriptions = [[NSArray alloc]initWithObjects:sortDescriptor, nil];
   [request setSortDescriptors:sortDescriptions];
   NSError *error = nil;
   //执行获取数据请求,返回数组
   NSMutableArray *mutableFetchResult = [[self.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
   if (mutableFetchResult == nil) {
       NSLog(@ "Error: %@,%@" ,error,[error userInfo]);
   }
   self.dataArray = mutableFetchResult;
   for (Dog *dog in self.dataArray) {
       NSLog(@ "age:%@---sex:%@---name:%@" ,dog.age,dog.sex,dog.name);
   }

现在我们给一个对象改个名字。
?
1
2
3
4
5
6
7
8
9
[dog setName:@ "哮天犬" ];
NSError *error;
BOOL isUpdateSuccess = [self.managedObjectContext save:&error];
if (!isUpdateSuccess) {
     NSLog(@ "error:%@,%@" ,error,[error userInfo]);
}
else {
     NSLog(@ "更新成功!" );
}

最后再删除这条数据
?
1
2
3
4
5
6
7
8
9
[self.managedObjectContext deleteObject:dog];
[self.dataArray removeObject:dog];
NSError *error;
if (![self.managedObjectContext save:&error]) {
     NSLog(@ "Error:%@,%@" ,error,[error userInfo]);
}
else {
     NSLog(@ "删除成功!" );
}

现在我就会这么多了,希望对你有所帮助。 还有, 系统 默认是把数据保存到Documents下面。你可以在AppDelegate的这个方法里修改。当然,这不重要。 \
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值