//回顾一下 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的基础概念、核心组件以及如何在实际项目中进行简单应用。 1. CoreData基础概念: CoreData并不是数据库,而是一个对象图管理系统,它通过NSManagedObject...
CoreData是苹果为iOS、macOS等平台提供的一种数据管理框架,它简化了SQLite数据库的使用,提供了模型层与持久化存储之间的抽象...通过"ZCoreData"这个文件,你可能能深入学习到更多关于CoreData的实践案例和高级用法。
在这个入门级程序中,我们将深入理解CoreData的基本概念、核心组件以及如何在实际应用中使用它们。 1. CoreData基本概念: - Managed Object Context(MOC):是CoreData的主要工作区,负责处理对象的创建、修改和...
在这个“CoreData增删改查的简单使用”主题中,我们将深入探讨如何利用CoreData进行基本的数据操作,包括添加(Create)、读取(Read)、更新(Update)和删除(Delete)数据。 1. **创建(Create)**: 在...
在使用CoreData之前,你需要在项目中导入它。在Objective-C中,这通常意味着在你的类文件中添加`#import <CoreData/CoreData.h>`。在Swift中,由于模块导入的特性,只需在项目中引入CoreData库,系统会自动处理...
8. **Counting objects**: 对于只关心数量而不关心具体数据的情况,可以使用`count(for:)`方法来快速获取满足条件的对象数量,这比获取所有对象更高效。 9. **Faulting and Uniquing**: CoreData的fault机制允许...
在iOS开发中,多线程是一项关键技能,特别是在处理数据密集型任务时,如使用CoreData框架进行数据库操作。CoreData是Apple提供的一种对象图管理器,用于存储和检索应用程序的数据。然而,由于主线程主要负责用户界面...
通过封装好的"CoreData使用 网易新闻",开发者可以直接调用预设的方法进行数据操作,简化了CoreData的使用流程,提高了开发效率。在实际应用中,可以根据需求进行调整和扩展,实现更加复杂的数据管理功能。
- **性能分析工具**:介绍Xcode内置的性能分析工具及其使用方法。 - **优化策略**:提供优化CoreData性能的具体策略和技术。 - **内存管理**:讨论如何有效管理内存,以减少内存泄漏等问题。 ##### 第十章:多个...
7. **界面绑定**: 如果Demo包含用户界面,它可能展示了如何使用 NSFetchedResultsController 将CoreData数据实时绑定到表格视图。 通过学习这个Demo,初学者可以了解CoreData的基本工作流程,以及如何在实际项目中...
由于团队希望项目能够去 CoreData 化,而以往状态同步都是依赖于 CoreData 的NSFetchedResultsController。因此去 CoreData 则必须寻找一种替代方案来进行状态同步。 NotificationCenter 状态同步实际是一对多的场景...
在这个"coreData增删改查Demo"中,我们将探讨如何使用CoreData进行基本的数据操作,包括创建、读取、更新和删除(CRUD)。 1. 创建(Create) 在CoreData中,创建新记录通常涉及创建一个新的Managed Object Context...
在这个实例中,可能是使用了第一种方法,即直接存储图像的二进制数据。 8. **NSFetchRequest**:用于从数据库中获取数据,可以进行复杂的查询操作,如根据特定条件筛选实体。 9. **NSPredicate**:是一个强大的...
通过查看和学习这些代码,你可以更深入地理解如何在Swift中使用CoreData进行数据管理,包括数据的添加、删除等基本操作,以及如何在不同的界面之间传递数据。为了提高效率和用户体验,开发者通常会结合使用` ...
在本 demo 中,我们将学习如何使用 CoreData 进行基本的操作。 1. **CoreData 架构** CoreData 包含了多个关键组件,如 Managed Object Context(MOC)、Model、Persistent Store Coordinator(PSC)和 Persistent...
以下是对Core Data在iOS应用中简单使用的详细说明。 1. **Core Data架构** Core Data 包含多个组件,如 Managed Object Model (MOM)、Managed Object Context (MOC) 和 Persistent Store Coordinator (PSC)。MOM ...
通过这个"CoreData实例",初学者可以学习到如何创建和维护数据模型,以及如何在代码中使用这些模型来存储和检索数据,从而更好地理解和掌握苹果的CoreData框架。同时,提供的帮助文档将有助于解释各种操作的背景和...
这通常在`AppDelegate.swift`文件的`application(_:didFinishLaunchingWithOptions:)`方法中完成,包括创建`NSPersistentContainer`、加载数据模型和设置`ManagedObjectContext`。 ```swift import CoreData lazy ...
在`CoredataStudy`这个项目中,开发者可以通过查看代码示例,学习如何实现上述功能,并理解如何在实际应用中有效地使用CoreData框架。这将有助于提升iOS开发中的数据管理能力,构建更稳定、高效的App。
- 对于大型数据集,考虑使用 NSFetchedResultsController 来分页加载数据,提高性能。 通过上述步骤,你可以构建一个基础的成绩管理系统。这个系统可以进一步扩展,比如增加对教师、课程等实体的支持,以及更复杂...