`
zheyiw
  • 浏览: 1019914 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

coredata 最简单例子

阅读更多

先按照网上的教程,建一个简单的带coredata的项目
再 添加一个 UserInfo 对象(表)(按照网上的教材,可视化方式添加)

然后在AppDelegate.m中按如下修改,(只添加了4个方法)

然后运行,看控制台日志


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
        
    [self addUser];       
    [self gainDatas];
    
    return YES;
}
//添加
-(void)addUser{
    UserInfo * userInfo  = [NSEntityDescription insertNewObjectForEntityForName:@"UserInfo" 
                                                         inManagedObjectContext:self.managedObjectContext];    
    userInfo.name = @"dage";
    userInfo.password = @"password3";
    NSError *error = nil;
    if (![self.managedObjectContext save:&error]) {        
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
    
    NSLog(@"add success");
    
}
//查询
-(void)gainDatas {    
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    [fetchRequest setEntity:[NSEntityDescription entityForName:@"UserInfo" inManagedObjectContext:self.managedObjectContext]];
    
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like[cd]'baobao'"];//查询条件
    // NSPredicate *predicate = [NSPredicate predicateWithFormat:@"password='password3'"];//查询条件
    
    NSMutableArray *sortDescriptors = [NSMutableArray array];    //排序用
    [sortDescriptors addObject:[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES] ];  //排序用
    
    [fetchRequest setPredicate:predicate];  //查询条件
    [fetchRequest setFetchBatchSize:5];     //分页  
    [fetchRequest setSortDescriptors:sortDescriptors];  //排序
    [fetchRequest setReturnsObjectsAsFaults:NO];
    [fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"name", @"password", nil]];  //查询的字段,一般不需要
    NSError *error = nil;
    NSArray *fetchedItems = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
    if (fetchedItems == nil) {
        NSLog(@"fetch request resulted in an error %@, %@", error, [error userInfo]);
    }else {
        NSLog(@"fetchedItems=%d",fetchedItems.count);
        for (UserInfo *user in fetchedItems) {
            NSLog(@"user.authour=%@",user.name);
            // [self deleteUser:user];  //删除            
            // [self updateUser:user];  //更新
        }
    }    
}
//删除:NSManagedObject对象必须先取出来,用managedObjectContext删除,保存就好
-(void)deleteUser:(id)user{
    [self.managedObjectContext deleteObject:user];  
    NSError *error = nil;
    if (![self.managedObjectContext save:&error]) {        
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
    
    NSLog(@"delete success");    
}
//更新:直接修改对象,保存managedObjectContext就好
-(void)updateUser:(UserInfo*)user{
    user.name = @"baobao";   //修改后,直接保存managedObjectContext就可以了 
    NSError *error = nil;
    if (![self.managedObjectContext save:&error]) {        
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
    
    NSLog(@"update success");    
}


分享到:
评论

相关推荐

    ios-CoreData的简单实用.zip

    一个简单的例子是创建一个User实体,包含name和email属性。首先定义实体和属性,然后在代码中创建User对象,设置属性值,最后保存到数据库: ```swift // 创建实体对象 let user =NSEntityDescription....

    CoreData增删改查的简单使用

    在这个“CoreData增删改查的简单使用”主题中,我们将深入探讨如何利用CoreData进行基本的数据操作,包括添加(Create)、读取(Read)、更新(Update)和删除(Delete)数据。 1. **创建(Create)**: 在...

    CoreData增删改查

    CoreData是苹果公司提供的一种数据管理框架,用于iOS、macOS以及其他Apple平台的应用程序中,它为应用程序提供了模型层的抽象,使得开发者可以方便地进行数据的存储和检索。在这个"CoreData增删改查"的主题中,我们...

    CoreData版本迁移

    2. 持久化上下文(ManagedObjectContext):这是CoreData的核心组件,它是一个内存中的对象图,用于管理应用程序的所有实体实例。当你对实体进行增删改查操作时,都是通过这个上下文来完成的。 3. 持久化存储协调器...

    SwiftUI CoreData增删改查完整代码

    当你在用户界面上收集到用户输入并保存时,这些信息可以被转化为CoreData的NSManagedObject实例。例如,你可以定义一个`@Environment(\.managedObjectContext)`属性,这是SwiftUI中的一个特殊环境对象,它允许你在...

    Swift利用CoreData实现一个上班签到的小工具

    在本文中,我们将探讨如何利用CoreData来构建一个简单的上班签到小工具。首先,我们需要理解CoreData的核心组成部分及其作用。 1. **托管对象 (NSManagedObject)**: 这是CoreData中的主要数据对象,它代表了应用...

    IOS之分析网易新闻存储数据 CoreData的使用 增删改查

    查询数据是CoreData最常用的功能之一,可以通过NSFetchRequest、NSPredicate和NSSortDescriptor进行复杂查询。以下是如何获取所有科技类新闻: ```swift let fetchRequest = NSFetchRequest(entityName: "News") ...

    SimpleBarcode:使用 AVFoundation 和 CoreData 构建的简单条码库存应用程序

    《使用AVFoundation和CoreData构建简单条码库存应用详解》 在iOS开发中,创建一个条码库存管理应用是一项常见的任务。本篇文章将深入探讨如何利用Apple的AVFoundation框架进行条码扫描,以及如何借助CoreData进行...

    DetetiveInv-CoreData

    Core Data不仅仅是一个简单的数据库,它更是一个完整的数据管理工具,能够帮助开发者在遵循MVC架构的同时,有效地管理应用的数据模型层。 Swift与Core Data的结合,让开发团队在构建数据驱动的应用时如虎添翼。不过...

    通讯录demo

    本篇将深入探讨一个名为“通讯录Demo”的项目,它是一个简单地模仿真实通讯录功能的应用,主要实现了联系人的增删改查操作,并利用苹果的CoreData框架来持久化数据。下面我们将详细解析这个Demo的核心知识点。 **1....

    千锋ios开发常用第三方库资源例子

    "千锋ios开发常用第三方库资源例子"是一个集合了各种实用库的示例项目,涵盖了网络、数据库和下拉刷新等多个方面,且带有详细注释,对于初学者和进阶开发者来说都是极好的学习材料。 1. **网络**: - AFNetworking...

    iOS本地搜索列表工具类

    例如,你可以创建一个NDSearchTool实例,然后设置搜索的实体类型、属性以及过滤条件,最后调用searchWithText:completion:方法来执行搜索,并在完成时返回结果。 6. **性能优化**:NDSearchTool通过批量加载和异步...

    CoreDataSwiftDemo:带有Swift 4.2的CREATE,RETRIEVE,UPDATE和DELETE记录的基本数据

    删除数据同样简单,找到要删除的对象,然后调用`deleteObject(_:)`方法将其标记为待删除。最后,再次调用`save()`方法将删除操作提交到数据库。请注意,删除操作是不可逆的,所以在执行之前应谨慎。 5. **Swift ...

    iphone开发实例

    这可能是一个详细的项目案例,演示如何创建一个简单的程序列表应用。在iOS开发中,通常会使用UITableView或者UICollectionView来展示列表数据。UITableView适用于单一行的列表,而UICollectionView则可以实现更复杂...

    Learn Cocoa on the Mac, 2nd Edition

    - **实现交互性**:通过具体的例子展示了如何使用动作和出口来创建响应用户操作的界面。 #### 第一次行动号召 本章继续深入Cocoa的编程细节,特别是如何实现更复杂的用户交互。读者将学习如何处理用户的输入并作出...

    ios-购物车简单实现.zip

    这个"ios-购物车简单实现.zip"文件提供了一个简化的购物车实现示例,主要涵盖了商品的显示、多选操作、购买数量的修改以及总价和购买商品总数的计算。下面将详细讲解这些知识点。 1. **商品展示**: 在iOS应用中,...

    移动开发领域 Object-C 语言在 iOS 开发中的应用.md

    对于数据库操作,CoreData框架的应用可以让数据库操作变得更加简单,提升程序的可读性和可维护性。在网络请求方面,AFNetworking库的使用能够简化网络代码,并加快开发速度。而在多媒体处理和地图应用开发中,...

    ios 持久化存储

    首先,UserDefaults是iOS中最简单的持久化存储方式,常用于存储轻量级的数据,如用户偏好设置。它的使用非常直观,你可以像操作字典一样进行读写操作: ```swift let defaults = UserDefaults.standard defaults....

    swift-最快的iOS应用实现添加一个笔记到您的电子邮件收件箱

    首先,你需要确认设备是否支持发送邮件(通过canSendMail方法检查),然后创建MFMailComposeViewController实例,并设置其属性,如收件人、主题和正文。笔记内容可以作为正文的一部分插入。 为了允许用户选择收件人...

Global site tag (gtag.js) - Google Analytics