当前位置: 首页 > news >正文

阿里云esc服务器 怎么做网站公司网站制作需要多少钱

阿里云esc服务器 怎么做网站,公司网站制作需要多少钱,建设网页制作,杭州活动策划公司有哪些简介 CoreData提供了对象关系映射(ORM)功能,从效果上说就是创建了一个"虚拟对象数据库",也可以把它看作一个综合的数据库管理库。 NSManagedObjectContext 被管理的数据上下文对象,主要负责应用和数据库之间的交互。我们就是用它来…

简介

  CoreData提供了对象关系映射(ORM)功能,从效果上说就是创建了一个"虚拟对象数据库",也可以把它看作一个综合的数据库管理库。

NSManagedObjectContext

  被管理的数据上下文对象,主要负责应用和数据库之间的交互。我们就是用它来进行增删改查操作。它会记录用户对数据的所有改变。它有NSPersistentStoreCoordinator

属性。创建它需要设置NSPersistentStoreCoordinator。

NSPersistentStoreCoordinator

  持久化数据协调库,用于添加持久化存储库,相当于数据库的连接器。也就是我们用数据库做持久化还是用XML做持久化是由它决定的。我们用它来设置存储库的类型和指定存储库的路径。它有NSManagedObjectModel属性。

NSManagedObjectModel

  NSManagedObjectModel代表CoreData的模型文件。CoreData项目中有一个.xcdatamodeld文件,它就是CoreData的模型文件。我们在.xcdatamodeld文件里进行创建实体和添加实体的属性。所以所有的实体信息都在NSManagedObjectModel中。

NSManagedObject

  NSManagedObject对应实体,NSManagedObject是实体的映射,被CoreData管理的数据记录。也就是说在CoreData中我们直接操作的数据对象是NSManagedObject,你可以把它们当做一个东西,但是在代码中我们使用NSManagedObject。

NSEntityDescripition

  实体描述类。包含实体的名字和属性。可以通过它来操作指定的实体。

基于SQLite简单使用

1.创建工程

若是新建的工程,勾选Use Core Data选项

    

AppDelegate文件中自动生成被管理数据上下文等相关代码,不用我们自己来进行相关的配置,可以直接使用。

在AppDelegate.h文件中添加如下代码:

/***  上下文对象,负责应用和数据库之间的交互。我们就是用它来操作实体,进行增删改查等操作*/
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
/***  管理数据模型,代表CoreData的模型文件。包含了所有实体的信息。*/
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
/***  持久性数据协调器,添加持久化存储裤。在这里设置使用数据库还是xml等存储裤来做持久化,以及存储裤的路径*/
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
//保存数据到持久层(数据库)
- (void)saveContext;
//应用程序沙盒Document目录
- (NSURL *)applicationDocumentsDirectory;

在AppDelegate.m文件中:

保存数据到持久层

- (void)applicationWillTerminate:(UIApplication *)application {[self saveContext];
}- (void)saveContext {NSManagedObjectContext *managedObjectContext = self.managedObjectContext;if (managedObjectContext != nil) {NSError *error = nil;if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {NSLog(@"Unresolved error %@, %@", error, [error userInfo]);abort();}}
}

被管理的数据模型

- (NSManagedObjectModel *)managedObjectModel {if (_managedObjectModel != nil) {return _managedObjectModel;}//指定.xcdatamodeld文件,该文件编译后会变为momd文件NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"CoreDataDemo" withExtension:@"momd"];_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];return _managedObjectModel;
}

持久性数据协调器

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {if (_persistentStoreCoordinator != nil) {return _persistentStoreCoordinator;}_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];//数据库路径NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreDataDemo.sqlite"];NSError *error = nil;NSString *failureReason = @"There was an error creating or loading the application's saved data.";/*addPersistentStoreWithType:指定存储类型NSSQLiteStoreType: 数据库NSXMLStoreType: XMLNSBinaryStoreType: 二进制文件NSInMemoryStoreType: 内存形式*/if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {// Report any error we got.NSMutableDictionary *dict = [NSMutableDictionary dictionary];dict[NSLocalizedDescriptionKey] = @"Failed to initialize the application's saved data";dict[NSLocalizedFailureReasonErrorKey] = failureReason;dict[NSUnderlyingErrorKey] = error;error = [NSError errorWithDomain:@"YOUR_ERROR_DOMAIN" code:9999 userInfo:dict];NSLog(@"Unresolved error %@, %@", error, [error userInfo]);abort();}return _persistentStoreCoordinator;
}

被管理数据上下文

- (NSManagedObjectContext *)managedObjectContext {if (_managedObjectContext != nil) {return _managedObjectContext;}NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];if (!coordinator) {return nil;}_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];[_managedObjectContext setPersistentStoreCoordinator:coordinator];return _managedObjectContext;
}

如果不是新工程建模后加入这些代码即可

 2.添加实体

在工程中选中.xcdatamdeld文件

 

点击

在右侧栏对实体命名

或者双击默认实体名进行命名

点击Add Attribute添加实体属性

如果一个实体中包含另一个实体,例如有一个实体Person还有一个实体Card。Person中有一个属性card,Card中也有一个属性person。那么就需要建立两个实体间的关系。如果下图这个页面,点击上图的Editor Style按钮切换一下。

两个实体都按这种方法创建关系。

选中关系,在右侧Delete Rule可以设置删除规则

关联模式Cascade,一个数据被删除,另一个实体的数据也会删除。

 按Editor Style按钮切换到另一种视图模式,最终两个实体关系图为:

3.为每个实体生成NSManagedObject子类

具体的类名就是实体的class,默认情况下就是实体的名字。如果不想用实体名字做类名只需更改实体的class:

4.插入数据

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];//获取上下文NSManagedObjectContext *contxt = [appDelegate managedObjectContext];//创建Person对象。创建被管理的NSManagedObject对象,指定实体名字Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:contxt];//设置person属性[person setValue:@"小小" forKey:@"name"];[person setValue:[NSNumber numberWithInt:29] forKey:@"age"];//创建Card对象。Card *card = [NSEntityDescription insertNewObjectForEntityForName:@"Card" inManagedObjectContext:contxt];//设置card属性[card setValue:[NSNumber numberWithInt:130] forKey:@"num"];//设置对象间关系[person setValue:card forKey:@"card"];[card setValue:person forKey:@"person"];NSError *error = nil;/*hasChanges:判断数据是否有变化save:保存数据变化,并将其同步到持久化数据文件中*/if ([contxt hasChanges] && ![contxt save:&error]) {NSLog(@"插入失败:%@,%@",error,error.userInfo);}else {NSLog(@"插入成功");}

5.查询数据

    AppDelegate *appDelegate = [[AppDelegate alloc] init];NSManagedObjectContext *cxt = [appDelegate managedObjectContext];//实体关联的描述类,指定实体名字获取NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:cxt];//数据提取请求类NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];//实体描述设定到请求对象中fetchRequest.entity = entity;//查询条件,如果想查询全部补设置查询条件即可fetchRequest.predicate = [NSPredicate predicateWithFormat:@"name=%@",@"小明"];//排序,指定排序字段和排序方式。根据年龄正序排序NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES];//把排序描述设定到请求对象中NSArray *sortDescriptors = @[sortDescriptor];fetchRequest.sortDescriptors = sortDescriptors;//限制一次提取数据的纪录数fetchRequest.fetchLimit = 10;NSError *error = nil;//请求查询,返回数组中存放被管理的ModelManagedObject实体对象NSArray *listData = [cxt executeFetchRequest:fetchRequest error:&error];for (Person *person in dataList) {NSLog(@"\nname:%@\tage:%@\ncard:%@",person.name,person.age,person.card.num);}

6.删除数据

    AppDelegate *appDelegate = [[AppDelegate alloc] init];NSManagedObjectContext *cxt = appDelegate.managedObjectContext;NSEntityDescription *entity = [NSEntityDescription entityForName:@"Model" inManagedObjectContext:cxt];NSFetchRequest *request = [[NSFetchRequest alloc] init];request.entity = entity;request.predicate = [NSPredicate predicateWithFormat:@"title=%@",model.title];NSError *error = nil;NSArray *listData = [cxt executeFetchRequest:request error:&error];if (listData.count > 0) {ModelManagedObject *modelObject = [listData lastObject];[cxt deleteObject:modelObject];error = nil;if ([cxt hasChanges] && ![cxt save:&error]) {NSLog(@"删除数据失败:%@",[error userInfo]);}else {NSLog(@"删除数据成功");}}

7.修改数据

    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];NSManagedObjectContext *contxt = [appDelegate managedObjectContext];NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:contxt];NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];fetchRequest.entity = entity;fetchRequest.predicate = [NSPredicate predicateWithFormat:@"name=%@",@"小明"];NSArray *dataList = [contxt executeFetchRequest:fetchRequest error:nil];Person *p = dataList.lastObject;p.name = @"小红";if ([contxt hasChanges] && ![contxt save:nil]) {NSLog(@"修改失败");}else {NSLog(@"修改成功");}

 

转载于:https://www.cnblogs.com/wangcb/p/5070731.html

http://www.wooajung.com/news/34018.html

相关文章:

  • 主持人做的化妆品网站百度提问登录入口
  • 网站建设的安全可行性广州市人民政府新闻办公室
  • b2b网站建设公司网络推广专员是干什么的
  • 学影视后期的正规学校seo排名技术软件
  • 微信平台APP网站建设怎么样温州网站优化推广方案
  • 做网站社区赚钱吗seo关键词优化排名外包
  • 建设银行的网站用户名seo软件服务
  • 藁城网站建设哪家好百度平台商家app下载
  • 大学生可做的网站主题百度竞价防软件点击软件
  • 网站建设单位是什么社交媒体营销策略有哪些
  • 东莞建设监督网站淘宝seo是什么意思
  • 网站搭建设计 是什么疫情最新官方消息
  • 网站建设 模板搜索 引擎优化
  • 哪些网站可以做简历baidu百度
  • 商城网站建设合同书如何查看百度指数
  • 单页网站制作系统青岛关键词优化seo
  • 做会议活动的网站加速游戏流畅的软件
  • 淘宝cms建站电子商务与网络营销题库
  • 餐饮vi设计一套多少钱win10优化
  • 黑彩网站建设需要什么东西百度关键词优化方法
  • 校园网站怎么做成人教育培训机构
  • 可以做商城网站的公司吗武汉最新今天的消息
  • 柳州团购网站建设中国疾控卫生应急服装
  • 推广方法的总结移动建站优化
  • 如何在分类信息网站做推广个人如何做seo推广
  • python搭建wordpress四川网站seo
  • 萝岗网站建设网站建设小程序开发
  • 宣传片制作公司保定seo搜索引擎优化哪家好
  • 联合建设官方网站微信scrm系统
  • 做一个跨境电商网站武汉全网推广