coredata

iPhone开发之CoreData(实战篇)

拈花ヽ惹草 提交于 2019-12-04 06:32:55
iPhone开发之CoreData(基础篇) 中已经学习了CoreData的理论基础,是基于“Master-Detail Application”项目的代码分析,这一篇直接进入实战。 我们从“Empty Application”一个空项目开始,命名为TestCoreData,并勾选Use Core Data,在AppDelegate中Xcode已经为我们生成了CoreData基本代码。 建模 打开xcdatamodeld文件,点击Add Entity按钮添加实体,并命名这个实体为Student,如下图。 点击Add Attribute按钮(也可以点击”+”号)并添加三个属性age、name、birth,类型分别为Integer32、String、Date,如下图 同样地再添加一个实体为Course,并添加两个属性title、score,类型为String、Integer32。 现在Student、Course两个实体就创建好了,接下来就要把这两个实体关联起来,先看看它们之间存在什么样的关系,如下图。 从上图可以看出,Student和Course之间存在一对多的关系,选择Student实体,在Relationships中添加一个courses关 联,同样在Course的Relationships中添加一个student关联,reloationship的Destination和

CoreData数据库迁移升级

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-03 16:36:03
如果IOS App 使用到CoreData,并且在上一个版本上有数据库更新(新增表、字段等操作),那在覆盖安装程序时就要进行CoreData数据库的迁移,具体操作如下: 1.选中你的mydata.xcdatamodeld文件,选择菜单editor->Add Model Version 比如取名:mydata2.xcdatamodel 2.设置当前版本 选择上级mydata.xcdatamodeld ,在inspector中的Versioned Core Data Model选择Current模版为mydata2 3.修改新数据模型mydata2,在新的文件上添加字段及表 4.删除原来的类文件,重新生成下类。 在appdelegate中 [html] view plain copy NSDictionary * optionsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; if (!

iOS 9, 10 CoreData: Failed to load optimized model at path

匿名 (未验证) 提交于 2019-12-03 09:02:45
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I have created new version of CoreData model and migrated existing one to it. Application works without any issues on iOS 9+, but for iOS 9 and 10 I am getting this error: 2017-10-22 19:28:37.081 CafeManager[16654:1918728] CoreData: Failed to load optimized model at path '/Users/dj-glock/Library/Developer/CoreSimulator/Devices/A81AA9C4-7B59-4422-BA0A-0FD0D1A05205/data/Containers/Bundle/Application/DD66571C-4EB6-4A8B-A99B-B447DD0FFFBA/CafeManager.app/CafeManager.momd/CafeManager v2.omo' iOS 10: CoreData: annotation: Failed to load optimized

iOS中CoreData数据管理系列一——初识CoreData

谁都会走 提交于 2019-12-03 08:53:07
iOS中CoreData数据管理系列一——初识CoreData 一、何为CoreData CoreData是一个专门用来管理数据的框架,其在性能与书写方便上都有很大的优势,在数据库管理方面,apple强烈推荐开发者使用CoreData框架,在apple的官方文档中称,使用CoreData框架可以减少开发者50%——70%的代码量,这虽然有些夸张,但由此可见,CoreData的确十分强大。 二、设计数据模型 在iOS开发中,时常使用SQL数据库对大量的表结构数据进行处理,但是SQL有一个十分明显的缺陷,对于常规数据模型的表,其处理起来是没问题的,例如一个班级表,其中每条数据中有班级名称,人数这样的属性,一个学生表,其中每条数据有学生的姓名,性别,年龄这样的属性。但是如果要在表与表之间建立联系,自定义对象与自定义对象之间产生从属关系,使用SQL处理起来就十分麻烦了,例如如果这个班级表中有一个班长的属性,这个属性是一个学生类型。关于iOS中SQL的使用相关博客,地址如下: Sqlite数据库相关知识: http://my.oschina.net/u/2340880/blog/600820 iOS中sqlite3框架的使用和封装: http://my.oschina.net/u/2340880/blog/601802 CoreData的一大优势即是其可以方便的在对象之间建立关系。 1

iPhone Core Data relationship fault

匿名 (未验证) 提交于 2019-12-03 08:52:47
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: I am building a core data iphone app, and having trouble with retrieving one-many relationship data. Please bear with me while I explain. I have used the data model designer to setup an entity called "Item" that contains many entities called "Comment". I then retrieve multiple entities and display them in a UITableView . I fetch these entities like this (in the viewDidLoad method): NSFetchRequest * request = [[ NSFetchRequest alloc ] init ]; NSEntityDescription * entity = [ NSEntityDescription entityForName :@ "Items"

Coredata crash while fetching

匿名 (未验证) 提交于 2019-12-03 08:52:47
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I am getting some weird coredata error in the production app and I was able to get hold of the Crash Report. Its Crashing with the following message at times *** error for object 0x17e400000: Freeing unallocated pointer *** error for object 0x17fd03730: pointer being reallocated was not allocated And here is the stack trace Crashed: SQLQueue 0x13ff15250 for datastore.sqlite SIGABRT ABORT 0x0000000183986014 0 libsystem_kernel.dylib __pthread_kill + 8 1 libsystem_pthread.dylib pthread_kill + 112 2 libsystem_c.dylib abort + 140 3 libsystem

Swift NSSet & CoreData

匿名 (未验证) 提交于 2019-12-03 08:46:08
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I am trying to move an objective C & CoreData app to Swift and iOS and hit a brick wall with iterating through NSSet objects: Xcode has generated these classes: class Response: NSManagedObject { @NSManaged var responseText: String @NSManaged var score: NSNumber @NSManaged var answers: NSSet @NSManaged var question: Question } class Question: NSManagedObject { @NSManaged var questionText: String @NSManaged var questionType: String @NSManaged var qualifier: Qualifier @NSManaged var responses: NSSet } then in the 3rd class I am adding a method

iPhone开发之CoreData(基础篇)

十年热恋 提交于 2019-12-03 03:48:29
通过上一篇 iPhone开发之SQLite 的学习,基本学会了 SQLite在iPhone中的使用,这时候我就在找有没有SQLite的封装类,这样可以避免自己重复地SQLite的封装代码,Google一下,找 到几个objc-sqlite、FMDB等,还有一些其它不知名的封装库,官方也提供了CoreData框架来提供完整的对象持久化存储方案,还是有必要 要学习一下。 基本概念 在CoreData有一些概念刚学习的时候不是很容易理解,还是要单独拿出来来梳理一下,这样学后面的内容不会感觉吃力。 图1 从图1中我们可以看到,在数据库结构中的一些术语,在这里会有对应,但不是全部。 ♥ 表结构:NSEntityDescription ♥ 表记录:NSManagedObject 图2 从图2中我们可以看到一些数据库操作方面的一些术语 ♥ 数据库存放方式:NSPersistentStoreCoordinator(持久化存储协调者) ♥ 数据库操作:NSManagedObjectContext(被管理的对象上下文) 还有一些类NSManagedObjectModel、NSFetchRequest什么的,具体项目就会有体会,下面来实战一下。 新建一个项目,项目模板基于“Master-Detail Application”,点击“Next”按钮,项目命名为“SimpleCoreData”,并勾选

Core Data: 'NSObjectInaccessibleException' when attempting to delete.

匿名 (未验证) 提交于 2019-12-03 03:08:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Core Data is allowing me to save, but when I try to delete the object, I'm getting the following error: *** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0xa6b7e00 <x-coredata://8A687ECB-03F8-47C0-8470-087B9CF032B1-2801-00000A8C9A09CDB7/Notification/p2774005D-4B49-4378-A109-949F15D37032>' ' [self.managedObjectContext executeFetchRequest:allFetchRequest onSuccess:^(NSArray *results) { NSLog(@"Fetch for Objects with origial_id"); if (results.count>0) { NSLog(@

CoreData asynchronous fetch causes concurrency debugger error

匿名 (未验证) 提交于 2019-12-03 03:04:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I'm using the -com.apple.CoreData.ConcurrencyDebug argument on launch to debug concurrency in my CoreData app. During app launch, I perform an asynchronous fetch on the main thread's managed object context. // set up the async request NSError * error = nil; [MOC executeRequest:asyncFetch error:&error]; if (error) { NSLog(@"Unable to execute fetch request."); NSLog(@"%@, %@", error, error.localizedDescription); } This code is called from the main thread, but executeRequest: enqueues it to another thread, which I understand to be the correct