Tag: 核心数据

核心数据:如何删除不在新数据中的对象

我已经学习了关于iOS5和iOS7的斯坦福大学讲座系列中的核心数据,并且已经使用核心数据成功制作了3个不同的应用程序。 但是我总是有一个我无法解决的关于核心数据的问题: 如果这些对象不存在于新数据中,是否有办法删除核心数据中的对象? 例如,假设我正在开发一个博物馆应用程序。 如果一个iPhone中的一些旧的Core-Data对象不存在于从Internet接收到的新数据中,则意味着这些旧对象在应用程序中不再需要,应该删除。 你如何删除这些? 更新和创build新的对象是很容易的,但是对于Core Data来说,删除过程是不可能的! 我可以删除所有对象并插入新的对象,但每次只修改,更改或删除一些对象。 所以延迟一切,再插入一切都不是一个有效的解决scheme,特别是考虑到你每次获取大约200个对象。

Core Data轻量级迁移有多less个迁移步骤?

我使用核心数据和轻量级迁移为我的iPhone应用程序。 假设我已经为应用程序创build了3个版本的数据模型。 一个用户安装了我的应用程序的早期版本,其数据模型版本仍然是v1。 当用户将应用程序更新到具有数据模型版本v1,v2和v3的最新版本时,更新过程中发生了什么? sqlite数据库首先从v1迁移到v2,然后从v2迁移到v3? 或者它只是从v1跳到v3?

从核心数据创buildjsonstring,反之亦然?

我拥有核心数据实体,拥有一对多的关系。 如何将我的实体中的数据转换为jsonstring,并在创build后使用jsonstring填充核心数据实体? 任何帮助将不胜感激…

核心数据与一个列表匹配一个多对多的关系

与这个问题有关的是它发生了一个新的问题 : 说我有这些属性: [red, green, blue]我怎样才能获取对象的一些或所有属性是在列表中, 但只在这个列表 ? * Object_1 (red, green, blue) * Object_2 (red, green) * Object_3 (red) 这意味着不会获取Object_4 (red, green, blue, yellow)因为它有yellow ,不在列表中

在后台moc中删除对象然后在主moc中刷新它导致NSFetchedResultsController更新崩溃

我遇到了一个我无法理解的NSObjectInaccessibleException : *** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0x8c40040 <x-coredata://85B02C1C-1FFC-4CBF-B7AC-EEA259115427/Event/p6>'' *** First throw call stack: ( 0 CoreFoundation 0x01aa15e4 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x018248b6 objc_exception_throw + 44 2 CoreData 0x0025733b _PFFaultHandlerLookupRow + 2715 3 CoreData 0x00256897 -[NSFaultHandler fulfillFault:withContext:forIndex:] + 39 4 CoreData 0x00256473 _PF_FulfillDeferredFault […]

Restkit – 通过外键的核心数据一对一关系映射

我已经花了几个小时,尝试了解决这个问题的一些不同的解决scheme,通过查看类似的问题已经解决了StackOverFlow线程。 但是,我撞到了一堵砖墙。 一些背景。 使用Restkit 0.22和核心数据来坚持2个对象,并build立它们之间的关系。 我正在build模的两个对象如下所示,关系也包含在COAgendaItem和COMapItemLocation(目前不工作的关系)之间的One-One关系的forms以及COMapItemLocation和COAgendaItem(I还没有看过这个映射呢): – COAgendaItem – COMapItemLocation 他们有相应的属性和关系 期望的结果是使核心数据关系与RestKit一起工作,即通过COAgendaItem对象上的代码可以访问属性agendaItemLocation。 来自服务器的JSON响应看起来像这样 上面的JSON响应是COAgendaItem对象所需的数据加上COMapItemLocation对象的主键。 我有一个映射的COMAPItemLocation的主键location_id字段的问题。 (我有响应描述符和检索代码设置,它工作正常,它只是成为一个问题,因为我试图映射关系) 到目前为止,我已经修改了我的RKEntityMapping以尝试映射关系。 + (RKMapping *)agendaItemMapping{ RKEntityMapping *agendaItemMapping = [RKEntityMapping mappingForEntityForName:@"COAgendaItem" inManagedObjectStore:[[COPersistenceCoordinator sharedCOPersistenceCoordinator]restKitObjectStore]]; [agendaItemMapping addAttributeMappingsFromDictionary:@{@"id": @"agendaItemID",@"title": @"agendaItemTitle",@"description": @"agendaItemDescription",@"start": @"agendaItemStartTime",@"end": @"agendaItemEndTime",@"category": @"agendaItemCategory",@"location_id" : @"agendaItemLocation"}]; [agendaItemMapping addConnectionForRelationship:@"agendaItemLocation" connectedBy:@"location_id"]; return agendaItemMapping; } 然而,这会导致启动时发生崩溃,如下所示(注意,我已经在默认映射中为外键添加@“location_id”:@“agendaItemLocation”映射,这是否必要) 我试着修改[agendaItemMapping addConnectionForRelationship:@"agendaItemLocation" connectedBy:@"location_id"]; 声明与所有的组合,我可以想到在单一的string和字典格式,即@ {“agendaItemLocation”:@“location_id”}但无论我尝试,它总是以前一样的错误'无法连接关系:无效的属性给定源实体“COAgendaItem”:location_id。 我完全沉迷于这一个,任何人都可以指出我做错了什么或需要做不同的事情吗? 提前感谢任何帮助! 🙂

在Core Data实体中检索最后一行/对象作为string

我需要为我的调查问卷应用程序开发一个简单的login系统。 我有两个Entity – 一个用于存储调查问卷数据,称为NGLS ,存储客户详细信息,调查答案等,另一个称为Admin用户。 用户可以input他们的username保存到Admin实体。 然后,他们可以随意浏览调查问卷,每次完成的调查都会在每次调查后保存到NGLS实体中,如下所示: // Save managedObject NSError *error; [[self.managedObjectNGLS managedObjectContext] save:&error]; NSLog(@"%@", self.managedObjectNGLS); NSLog(@"Data saved"); 有一个exportbutton,它使用NSFetchRequest来检索存储在NGLS实体中的所有数据,并使用CHCSV Parser将该数据写入一个.csv,然后将其附加到电子邮件中。 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"NGLS" inManagedObjectContext:context]; [fetchRequest setEntity:entity]; NSError *error; NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error]; // CHCSVParser NSOutputStream *stream = [[NSOutputStream alloc]initToMemory]; CHCSVWriter *writer = [[CHCSVWriter alloc]initWithOutputStream:stream encoding:NSUTF8StringEncoding […]

CoreData通过退出保存对象的变化

这个问题需要参考这个问题(代码可以在那里看到): 问题 如果我创build一些新的对象,我可以与他们合作,改变他们之间等一切工作。 但是,如果完全closures应用程序(在iOS5多任务栏)并再次打开它,我得到了我创build的对象的数量,但所有的属性都设置为标准值。 除了一个以外的所有对象都是这种情况:站在列表之上的那个对象。 我忘记了保存命令吗? 谢谢!

错误:无法find接受提供参数的“title”的重载

目前我有NSManaged对象的子类称为Folder属性称为itemtypesNSSet 。 我有一个函数返回一个NSMutableArray ,我试图在tableview中显示数据(然后重新排列表中显示的顺序)。 class Folder: NSManagedObject { @NSManaged var title: String @NSManaged var date: NSDate @NSManaged var item: NSSet func itemMutableArray() -> NSMutableArray { return NSMutableArray(array: (item.allObjects as! [Checklist]).sorted{ $0.date.compare($1.date) == NSComparisonResult.OrderedAscending } ) } TableViewController: var itemMutableArray: NSMutableArray! itemMutableArray = folder.itemMutableArray() cell.textLabel?.text = itemMutableArray[indexPath.row].title //Error 不幸的是,当使用这个函数时,这在我的tableview中返回一个错误。 错误无法find接受提供的参数的“标题”的重载 最终我试图实现的是显示数据并移动单元格来改变NSSet的顺序。 table.didMoveCellFromIndexPathToIndexPathBlock = {(fromIndexPath: NSIndexPath, toIndexPath: […]

如果核心数据设置为相同的值,核心数据是否将其视为已更改的值?

为了确保我select了正确的NSMergePolicy我很好奇当前值是否被设置为能够引起跨多个上下文的合并冲突。 具体来说,在我的情况下,我想确保修改的标志将冲突,如果设置在一个不合时宜的保存。 例: //… //on background thread, doing some work to an object because it's status was //set to Status_Modified [managedObjectContext performBlockAndWait:^{ object.status = Status_NotModified; [managedObjectContext setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy]; [managedObjectContext save:&error]; }]; 如果这样做,在主线程上,状态会被设置为Status_Modified并保存? 对象状态是否保持为Status_Modified ? 也就是说,“地位”财产会被认为是变化的,因此引起冲突,从而打败我们的记忆变化(根据政策)?