首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏华仔的技术笔记

    CoreData的线程安全

    1.没有线程安全的coredata数据读取: NSManagedObjectContext对象的创建: _managedObjectContext = [[NSManagedObjectContext alloc] init]; 2.线程安全的coreData操作: 1,创建并行的NSManagedObjectContext对象: [[NSManagedObjectContext alloc] (表示可以在子线程中执行) 在主线程,主要执行插入,修改和删除操作,一些小的查询也可以在这里同步执行,如果有大的查询,就起一个新的 NSPrivateQueueConcurrencyType 类型的 NSManagedObjectContext NSManagedObject 也不能跨线程访问,所以在block里获取到的NSManagedObject对象只能将objectid传到主线程,主线程再通过 objectWithID 恢复对象的方法 2,NSManagedObjectContext

    1K80发布于 2018-05-17
  • 来自专栏Helloted

    CoreData简介以及第三方框架MagicRecord源码解析

    NSManagedObject操作的上下文,NSManagedObject的操作会先缓存在上下文中,还未存到磁盘中 - (NSManagedObjectContext *)managedObjectContext 为自己的父级,这个时候子级可以访问父级下所有的对象,而且子级 NSManagedObjectContext 的内容变化后,如果执行save方法,会自动的 merge 到父级 NSManagedObjectContext 中,也就是子级save后,变动会同步到父级 NSManagedObjectContext。 ,而NSManagedObjectContext可以共享一个NSPersistentStoreCoordinator或者,每个NSManagedObjectContext都对应一个NSPersistentStoreCoordinator *current_context = [NSManagedObjectContext MR_contextWithParent:[NSManagedObjectContext MR_defaultContext

    1K20编辑于 2022-06-07
  • 来自专栏iOS Developer

    详解持久化Core Data框架的原理以及使用---转自Bison的技术博客

    = nil) { // 创建NSManagedObjectContext对象 _managedObjectContext = [[NSManagedObjectContext 4.Core Data数据的增删查改 获取托管对象上下文NSManagedObjectContext之后,接下来即可通过该对象来执行增、删、查、改操作。 该方法的第1个参数为实体名,第2个参数为NSManagedObjectContext对象。为新实体设置属性。调用NSManagedObjectContext对象的save:方法执行保存。 最后调用NSManagedObjectContext对象的save:方法执行保存。 管理下的实体;然后修改实体的属性;再调用NSManagedObjectContext对象的save:方法执行保存。

    2K50发布于 2018-07-04
  • 来自专栏iOS开发攻城狮的集散地

    iOS CoreData (一) 增删改查

    ,在此之前要注意下图两个设置部分,否则会引起崩溃现象 [注意1.png] [注意2.png] [创建实体类.png] [创建实体类.gif] [实体类的四个文件.png] 4、生成上下文 关联数据库 NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; 封装了应用程序中的CoreData Stack(核心数据栈堆),简化了创建和管理的核心堆栈的数据处理创建NSManagedObjectModel,NSPersistentStoreCoordinator,NSManagedObjectContext - (void)performBackgroundTask:(void (^)(NSManagedObjectContext *))block; 5.增删改查排 写入数据 // 1.根据Entity 名称和NSManagedObjectContext获取一个新的继承于NSManagedObject的子类Student Student * student = [NSEntityDescription

    1.8K70发布于 2018-05-22
  • 来自专栏iOS122-移动混合开发研究院

    MagicalRecord,一个简化CoreData操作的工具库

    下面是一个简单的例子,具体含义下文都会提到: // 获取上下文环境 NSManagedObjectContext *localContext = [NSManagedObjectContext 默认上下文 当使用Core Data时,你经常使用的连两类主要对象是: NSManagedObject和 NSManagedObjectContext. 为了获取默认上下文,调用: NSManagedObjectContext *defaultContext = [NSManagedObjectContext MR_defaultContext]; 这个上下文对象 如果你想创建一个新的对象管理上下文对象,以用于非主线程,可使用下面的方法: NSManagedObjectContext *myNewContext = [NSManagedObjectContext 在你的block内部提供一个单一的 NSManagedObjectContext 上下文对象.

    2K50发布于 2018-01-02
  • 来自专栏Antony iOS Development

    「死磕」Core Data——入门

    的deleteObject:方法删除数据 查:利用NSManagedObjectContext的executeFetchRequest:error:方法,查询数据 保存:利用NSManagedObjectContext 说是一个对象的集合,由4个主要对象构成: 「managed object context」 (NSManagedObjectContext), 「persistent store coordinator NSManagedObjectContext类实例。 备注:对数据进行删除、保存、查询,都要用到NSManagedObjectContext类的相关方法。 对应示意图第3个框框。 对象,是通过上面创建的NSPersistentContainer对象的属性viewContext获取的,无需自己初始化(iOS10之前要自己初始化) NSManagedObjectContext 4、删 删除数据比较简单,直接调用NSManagedObjectContext的deleteObject:方法即可。

    1.6K20发布于 2019-02-14
  • 来自专栏iOS开发攻城狮的集散地

    iOS CoreData (一) 增删改查

    实体类的四个文件.png 4、生成上下文 关联数据库 NSManagedObjectContext 管理对象,上下文,持久性存储模型对象,处理数据与应用的交互 NSManagedObjectModel *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; 封装了应用程序中的CoreData Stack(核心数据栈堆),简化了创建和管理的核心堆栈的数据处理创建NSManagedObjectModel,NSPersistentStoreCoordinator,NSManagedObjectContext - (void)performBackgroundTask:(void (^)(NSManagedObjectContext *))block; 5.增删改查排 写入数据 // 1.根据Entity 名称和NSManagedObjectContext获取一个新的继承于NSManagedObject的子类Student Student * student = [NSEntityDescription

    1.6K80发布于 2018-05-22
  • 来自专栏云原生布道专栏

    【IOS】IOS开发问题解决方法索引(五)

    你可能会采取批处理的方式,即一小批一小批的更新 NSManagedObject 并保存到 NSManagedObjectContext 中,但这样会花费很多时间,用户体验较差。 然后刷新 NSManagedObjectContext 对应的数据和UI界面,还需要保证更新后的数据满足数据库模型上的 validation ,因为 NSManagedObjectContext 没有感知 也即是说虽然是异步抓取,其实我们用的还是以前的 NSFetchRequest ,当 NSFetchRequest 抓取结束后会更新 NSManagedObjectContext ,这也就意味着NSManagedObjectContext ,这个方法在 NSManagedObjectContext 上执行时, NSManagedObjectContext 会立即制造并返回一个NSAsynchronousFetchResult ,同时 NSAsynchronousFetchRequest 的 finalResult 属性,更新NSManagedObjectContext ,执行 NSAsynchronousFetchRequest 的回调block。

    1.2K20编辑于 2022-03-08
  • 来自专栏云原生布道专栏

    【IOS开发高级系列】CoreData专题

    4,NSManagedObjectContext 参与对数据进行各种操作的整个过程,它持有 Managed Object。我们通过它来监测 Managed Object。 5.3.2 示例代码 5.3.2.1 Context初始化 - (NSManagedObjectContext*)getLargeWriteManageObjectContext {     NSManagedObjectContext 也即是说虽然是异步抓取,其实我们用的还是以前的 NSFetchRequest ,当 NSFetchRequest 抓取结束后会更新 NSManagedObjectContext ,这也就意味着NSManagedObjectContext  ,这个方法在 NSManagedObjectContext 上执行时, NSManagedObjectContext 会立即制造并返回一个NSAsynchronousFetchResult ,同时 NSAsynchronousFetchRequest 然后刷新 NSManagedObjectContext 对应的数据和UI界面,还需要保证更新后的数据满足数据库模型上的 validation ,因为 NSManagedObjectContext 没有感知

    1.8K50编辑于 2023-10-16
  • 来自专栏進无尽的文章

    储存篇 - CoreData使用大全

    【二】各种类作用的介绍 创建Core Data Stack iOS10中利用NSPersistentContainer iOS10之前涉及NSManagedObjectContext、NSPersistentStoreCoordinator *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; (并且已经帮我们创建了.xcdatamodeld模型文件) 注意看saveContext,我们通过NSPersistentContainer的属性viewContext拿到NSManagedObjectContext 对象(_context是声明在.h文件的属性——因为其他类也要用到这个属性)) _context = [[NSManagedObjectContext alloc] initWithConcurrencyType *localContext = [NSManagedObjectContext MR_context]; // 在当前上下文环境中创建一个新的 Person 对象.

    3.7K20发布于 2019-01-02
  • 来自专栏肘子的Swift记事本

    SwiftDataKit:让你在 SwiftData 中使用 Core Data 的高级功能

    例如,下面是从 ModelContext 中提取 NSManagedObjectContext 的代码示例: public extension ModelContext { // Computed property to access the underlying NSManagedObjectContext var managedObjectContext: NSManagedObjectContext NSManagedObjectContext else { return nil } return managedObjectContext 利用 NSManagedObjectContext 实现分组计数 在某些场景下,我们需要对数据进行分组后计数,比如统计不同出生年份的学生人数。 有了 SwiftDataKit,我们可以直接使用 ModelContext 底层的 NSManagedObjectContext,通过创建 NSExpressionDescription,在 SQLite

    79240编辑于 2023-09-18
  • 来自专栏肘子的Swift记事本

    SwiftData 中的并发编程

    欢迎大家在 Discord 频道[2] 中进行更多地交流 用串行队列来避免数据竞争 我们经常说,Core Data 中的托管对象实例(NSManagedObject)和托管对象上下文(NSManagedObjectContext container.performBackgroundTask{ context in ... } 然而,SwiftData 对 ModelContext( NSManagedObjectContext NSManagedObjectContext + 地址 的私有串行队列,Actor 的执行队列与其一致。 可以将其视为 Core Data NSManagedObjectContext 的 existingObject(with:) 方法的对应版本。 registeredModel(for:) 对应于 NSManagedObjectContext 的 registeredObject(for:) 方法;model(for:) 对应于 NSManagedObjectContext

    73630编辑于 2023-10-16
  • 来自专栏非典型技术宅

    Swift实践:使用CoreData完成上班签到小工具1. CoreData Stack的作用2.创建 CoreData Stack3. 一对多的关系4. 完成Demo,了解使用CoreData St

    其实这个东西在一篇的时候提到过,不信您看:Swift实践:使用CoreData完成一个通讯录存储 一个基本的 Core Data 栈由四个主要部分组成:托管对象 (NSManagedObject),托管对象上下文 (NSManagedObjectContext 心酸~~~~ 2.1 iOS9 在iOS9中,CoreData Stack的三个核心类是这样的: -管理对象上下文NSManagedObjectContext 对象模型NSManagedObjectModel Step1:搞一个NSPersistentContainer出来 Step2:创建CoreData Stack Step3:别忘了还有一个NSManagedObjectContext Step4:提供一个保存数据的方法 error\(error)") } }) return container }() lazy var managedContext: NSManagedObjectContext

    1.9K30发布于 2018-06-28
  • 来自专栏一“技”之长

    iOS中CoreData数据管理系列四——进行数据与页面的绑定

    addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:path options:nil error:nil];     NSManagedObjectContext  * moc = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSMainQueueConcurrencyType];     [moc

    1.1K10发布于 2018-08-15
  • 来自专栏肘子的Swift记事本

    SwiftDataKit:让你在 SwiftData 中使用 Core Data 的高级功能

    例如,下面是从 ModelContext 中提取 NSManagedObjectContext 的代码示例: public extension ModelContext { // Computed property to access the underlying NSManagedObjectContext var managedObjectContext: NSManagedObjectContext NSManagedObjectContext else { return nil } return managedObjectContext 利用 NSManagedObjectContext 实现分组计数 在某些场景下,我们需要对数据进行分组后计数,比如统计不同出生年份的学生人数。 有了 SwiftDataKit,我们可以直接使用 ModelContext 底层的 NSManagedObjectContext,通过创建 NSExpressionDescription,在 SQLite

    71920编辑于 2023-09-18
  • 来自专栏肘子的Swift记事本

    关于 Core Data 并发编程的几点提示

    在 Core Data 中,我们可以创建两种类型的托管对象上下文(NSManagedObjectContext)——主队列上下文和私有队列上下文。 其中,开发者接触最频繁、使用量最大的托管对象上下文(NSManagedObjectContext)和托管对象(NSManagedObject)恰好都不是线程安全的。 但是,对于私有上下文,由于队列是私有的,只存在于 NSManagedObjectContext 实例的内部,因此只能通过perform或performAndwait方法来调用它。 ])} 也可以使用 NSManagedObjectContext 实例的 mergeChanges 方法,逐个上下文合并。 在 iOS 10 版本,Core Data 为 NSManagedObjectContext 添加了 automaticallyMergesChangesFromParent 属性。

    1.2K20编辑于 2022-07-28
  • 来自专栏一“技”之长

    iOS中CoreData数据管理系列二——CoreData框架中三个重要的类

    xcdatamodeld文件;NSPersistentStoreCoordinator相当于数据库与数据模型之间的桥接器,通过NSPersistentStoreCoordinator将数据模型存入数据库;NSManagedObjectContext 移除一个持久化的数据接收对象 - (BOOL)removePersistentStore:(NSPersistentStore *)store error:(NSError **)error; 四、数据对象管理上下文NSManagedObjectContext     NSManagedObjectContext是进行数据管理的核心类,我们通过这个类来进行数据的增删改查等操作。

    1K20发布于 2018-08-15
  • 来自专栏非典型技术宅

    Swift实践:使用CoreData完成一个通讯录存储

    Core Data架构 一个基本的 Core Data 栈由四个主要部分组成:托管对象 (NSManagedObject),托管对象上下文 (NSManagedObjectContext),持久化存储协调器 这些对象都保存在NSManagedObjectContext中,每个存储对象都知道自己对应哪个上下文。 NSManagedObjectContext :日常打交道的都是这个。

    2.2K40发布于 2018-06-28
  • 来自专栏一“技”之长

    iOS中CoreData数据管理系列三——添加与查询数据

    addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:path options:nil error:nil];     //创建数据管理上下文     NSManagedObjectContext  * moc = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSMainQueueConcurrencyType];     //关联持久化协调者

    1.3K30发布于 2018-08-15
  • 来自专栏华仔的技术笔记

    tabviewcell侧滑删除出现的异常

    objectAtIndexPath:indexPath]; AppDelegate *appDelegate = [UIApplication sharedApplication].delegate; NSManagedObjectContext

    1.3K100发布于 2018-05-17
领券