`

coreData中的NSFetchedResultsController 用法

 
阅读更多
//回顾一下 core data的用法

//以新建一个项目为例

1.新建项目 选择"Utility Application" -> 选择"Use Core Data"

2.点击proName.xcdatamodeld  ->  Add Entity 增加需要的实体(也就是java中的bean)

3.entity加完之后 选择工程 新建(command+n)  
     ->  选择"Core Data" 中的 "NSManagedObjectsubclass"  
     -> 勾选proName.xcdatamodeld
     -> 勾选entity
     -> create

4. AppDelegate.h 重要的三个属性变量
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;


5. AppDelegate.m 中三个重要方法
   (1)
   
    - (NSManagedObjectContext *)managedObjectContext
       {...}

     - (NSManagedObjectModel *)managedObjectModel
       {...}

     - (NSPersistentStoreCoordinator *)persistentStoreCoordinator
       {...}
    


6.纯属查询
   //假设 有一个entity    Department(deptID,deptName)
   //同时 sqlite中已经有数据 我要从中取出所有的department然后放到一个数组中
   (1) DeptViewController.h
        #import <CoreData/CoreData.h>
        #import "AppDelegate.h"
        #import "Department.h"

   (2)
- (AppDelegate*)appDelegate{
    return (AppDelegate*)[UIApplication sharedApplication].delegate;
}

- (void)loadDBData{
    NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:NSStringFromClass([Doctors class])];
    
    // sort by
    NSSortDescriptor *sortID = [[NSSortDescriptor alloc] initWithKey:@"deptId" ascending:YES];
    NSSortDescriptor *sortName  = [[NSSortDescriptor alloc] initWithKey:@"deptName" ascending:YES];
    NSArray *sortArr = [NSArray arrayWithObjects:sortID, sortName, nil];
    [request setSortDescriptors:sortArr];
    
    // where
    NSPredicate *where = [NSPredicate predicateWithFormat:@"deptId == %@", @"0"];
    [request setPredicate:where];

    NSArray *resultArr = [[self appDelegate].managedObjectContext executeFetchRequest:request error:NULL];   //resultArr中的对象全部是Department类型

    self.deptArray = resultArr;
    
    [sortID     release];
    [sortName   release];
    [request    release];
}



7. 删除数据 (先后经过"查询数据"、"删除数据"、"保存数据")
- (void)deleteTable:(Class)tablename{
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *selectionItems = [NSEntityDescription entityForName:NSStringFromClass([tablename class])
                                                      inManagedObjectContext:[self appDelegate].managedObjectContext];
    fetchRequest.entity = selectionItems;
    
    NSMutableArray *items = [[NSMutableArray alloc] initWithArray:[[self appDelegate].managedObjectContext 
                                              executeFetchRequest:fetchRequest 
                                                            error:NULL]];
    while([items count] > 0) {
        id item = [items lastObject];
        [[self appDelegate].managedObjectContext deleteObject:item];
        [items removeObject:item];
    }
    
    [items release];
    [fetchRequest release];
    [[self appDelegate].managedObjectContext save:NULL];
}


8. 添加数据
- (void)insertInManagedObjectContext:(NSManagedObjectContext *)moc withData:(NSDictionary *)data{
    Department *bean = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([Department class])
                                                     inManagedObjectContext:moc];
    
    bean.deptId    = [data valueForKey:@"aId"];
    bean.deptName  = [data valueForKey:@"aName"];

    [moc save:NULL];
}
分享到:
评论

相关推荐

    CoreData简单使用dome

    在这个"CoreData简单使用dome"中,我们将深入探讨CoreData的基础概念、核心组件以及如何在实际项目中进行简单应用。 1. CoreData基础概念: CoreData并不是数据库,而是一个对象图管理系统,它通过NSManagedObject...

    CoreData的使用包括实体关联的数据插入.字段中存储对象

    CoreData是苹果为iOS、macOS等平台提供的一种数据管理框架,它简化了SQLite数据库的使用,提供了模型层与持久化存储之间的抽象...通过"ZCoreData"这个文件,你可能能深入学习到更多关于CoreData的实践案例和高级用法。

    CoreData入门级程序 不看后悔

    在这个入门级程序中,我们将深入理解CoreData的基本概念、核心组件以及如何在实际应用中使用它们。 1. CoreData基本概念: - Managed Object Context(MOC):是CoreData的主要工作区,负责处理对象的创建、修改和...

    CoreData增删改查的简单使用

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

    CoreData 封装

    在使用CoreData之前,你需要在项目中导入它。在Objective-C中,这通常意味着在你的类文件中添加`#import &lt;CoreData/CoreData.h&gt;`。在Swift中,由于模块导入的特性,只需在项目中引入CoreData库,系统会自动处理...

    CoreData多表查询

    8. **Counting objects**: 对于只关心数量而不关心具体数据的情况,可以使用`count(for:)`方法来快速获取满足条件的对象数量,这比获取所有对象更高效。 9. **Faulting and Uniquing**: CoreData的fault机制允许...

    iPhone 多线程 CoreData使用源代码

    在iOS开发中,多线程是一项关键技能,特别是在处理数据密集型任务时,如使用CoreData框架进行数据库操作。CoreData是Apple提供的一种对象图管理器,用于存储和检索应用程序的数据。然而,由于主线程主要负责用户界面...

    CoreData使用 网易新闻

    通过封装好的"CoreData使用 网易新闻",开发者可以直接调用预设的方法进行数据操作,简化了CoreData的使用流程,提高了开发效率。在实际应用中,可以根据需求进行调整和扩展,实现更加复杂的数据管理功能。

    coredata教程

    - **性能分析工具**:介绍Xcode内置的性能分析工具及其使用方法。 - **优化策略**:提供优化CoreData性能的具体策略和技术。 - **内存管理**:讨论如何有效管理内存,以减少内存泄漏等问题。 ##### 第十章:多个...

    iOS-CoreData源码Demo

    7. **界面绑定**: 如果Demo包含用户界面,它可能展示了如何使用 NSFetchedResultsController 将CoreData数据实时绑定到表格视图。 通过学习这个Demo,初学者可以了解CoreData的基本工作流程,以及如何在实际项目中...

    详解iOS中跨页面状态同步方案比较

    由于团队希望项目能够去 CoreData 化,而以往状态同步都是依赖于 CoreData 的NSFetchedResultsController。因此去 CoreData 则必须寻找一种替代方案来进行状态同步。 NotificationCenter 状态同步实际是一对多的场景...

    coreData增删改查Demo

    在这个"coreData增删改查Demo"中,我们将探讨如何使用CoreData进行基本的数据操作,包括创建、读取、更新和删除(CRUD)。 1. 创建(Create) 在CoreData中,创建新记录通常涉及创建一个新的Managed Object Context...

    coredata实例

    在这个实例中,可能是使用了第一种方法,即直接存储图像的二进制数据。 8. **NSFetchRequest**:用于从数据库中获取数据,可以进行复杂的查询操作,如根据特定条件筛选实体。 9. **NSPredicate**:是一个强大的...

    swift coredata

    通过查看和学习这些代码,你可以更深入地理解如何在Swift中使用CoreData进行数据管理,包括数据的添加、删除等基本操作,以及如何在不同的界面之间传递数据。为了提高效率和用户体验,开发者通常会结合使用` ...

    ios CoreData demo

    在本 demo 中,我们将学习如何使用 CoreData 进行基本的操作。 1. **CoreData 架构** CoreData 包含了多个关键组件,如 Managed Object Context(MOC)、Model、Persistent Store Coordinator(PSC)和 Persistent...

    iOS coredata 简单使用

    以下是对Core Data在iOS应用中简单使用的详细说明。 1. **Core Data架构** Core Data 包含多个组件,如 Managed Object Model (MOM)、Managed Object Context (MOC) 和 Persistent Store Coordinator (PSC)。MOM ...

    CoreData实例

    通过这个"CoreData实例",初学者可以学习到如何创建和维护数据模型,以及如何在代码中使用这些模型来存储和检索数据,从而更好地理解和掌握苹果的CoreData框架。同时,提供的帮助文档将有助于解释各种操作的背景和...

    IOS CoreData使用

    这通常在`AppDelegate.swift`文件的`application(_:didFinishLaunchingWithOptions:)`方法中完成,包括创建`NSPersistentContainer`、加载数据模型和设置`ManagedObjectContext`。 ```swift import CoreData lazy ...

    coredata学习demo

    在`CoredataStudy`这个项目中,开发者可以通过查看代码示例,学习如何实现上述功能,并理解如何在实际应用中有效地使用CoreData框架。这将有助于提升iOS开发中的数据管理能力,构建更稳定、高效的App。

    iOS CoreData实现简易的成绩管理系统

    - 对于大型数据集,考虑使用 NSFetchedResultsController 来分页加载数据,提高性能。 通过上述步骤,你可以构建一个基础的成绩管理系统。这个系统可以进一步扩展,比如增加对教师、课程等实体的支持,以及更复杂...

Global site tag (gtag.js) - Google Analytics