Tag: nsfetchedresults

NSFetchedResultsController的快速部分

我有一个表视图,从一个CoreData实体带有3个字段的数据。 名字:string,姓氏:string和完成:NSNumber(这是一个UISwitch可以打开或closures)。 我想用名字和姓氏来填充表格,但是第一部分是带有开关的名字,第二部分是带有开关的名字。 这里是保存数据的代码: class ViewController: UIViewController { var context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext! var newItem: List? = nil @IBOutlet weak var txtFirst: UITextField! @IBOutlet weak var txtLast: UITextField! @IBOutlet weak var switchDone: UISwitch! override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } @IBAction func cancelTapped(sender: AnyObject) { dismissVC() } @IBAction func […]

NSPredicate,获得一个一对多关系的子集的结果

我没有解决与核心数据和NSFetchedResultsController 。 我的数据模型看起来像这样: 具有一对多关系的产品称为dataLines 。 dataLine实体有一个属性名称theWeek 。 我想获取dataLines.theWeek == someValue所有Product 。 这很容易通过子查询完成。 但是这将返回所有dataLines。 是否有可能创build一个NSPredicate返回Product和一个子集,如果dataLines只与dataLines == someValue ?

UITableView与NSFetchedResultsController不会第二次加载

更新3这是第一次运行一个空的数据存储后的日志。 2013-02-07 20:57:06.708 Five Hundred Things[14763:c07] mainMOC = <NSManagedObjectContext: 0x7475a90> 2013-02-07 20:57:06.711 Five Hundred Things[14763:1303] Import started 2013-02-07 20:57:06.712 Five Hundred Things[14763:1303] backgroundMOC = <NSManagedObjectContext: 0x8570070> 2013-02-07 20:57:06.717 Five Hundred Things[14763:c07] FRC fetch performed 2013-02-07 20:57:06.718 Five Hundred Things[14763:c07] numberOfSectionsInTableView returns 1 2013-02-07 20:57:06.720 Five Hundred Things[14763:c07] numberOfSectionsInTableView returns 1 2013-02-07 20:57:06.720 Five Hundred Things[14763:c07] […]

核心数据应用程序崩溃与“controllerWillChangeContent:无法识别的select器发送到实例”

我有一个有2个视图的核心数据应用程序。 第一个视图列出房间中的“房间”,第二个列表“场景”。 房间页面有一个编辑的NavItembutton,按下后可以添加一个NavItembutton。 您可以从这里删除和添加房间。 新增房间只是在表格中以默认的“新房”名称出现。 第二个视图是所选房间中的场景列表。 在这里同样的事情,你可以删除和添加场景,并添加场景只是出现在名称为“新场景”的表中。 没什么特别的 我在两个视图控制器中都使用了FetchedResultsController ,场景之一有NSPredicate只返回选定房间的场景。 我也使用controllerWillChangeContent , controllerDidChangeContent等委托方法的表视图更新。 这一切都起初工作正常,但通常在导航房间和场景后,然后试图删除一个场景将崩溃。 如果你玩了足够长的时间,它将不可避免地崩溃。 只有在删除场景时才会发生。 如果按下编辑button并删除一个场景,它将起作用,那么在该编辑会话中的所有以下删除将始终工作。 它只会在第一次删除编辑会话时崩溃。 我得到的错误是一个奇怪的: 由于未捕获exception'NSInvalidArgumentException',原因:' – [__ NSCFType controllerWillChangeContent:]:发送到实例0x5e02d70的无法识别的select器' 这个错误的第一部分有时会改变。 有时它是__NSCFType ,有时候是CALayer 。 只有在删除场景时才会出现此错误。 添加场景很好100%。 我已经阅读了另一篇文章,提示这些错误可能来自内存pipe理问题。 我已经仔细检查了代码,并使用泄漏仪器通过仪器运行。 没有泄漏。 还有什么我可以检查? 有任何想法吗? 这是相关的代码 从ScenesTableViewController.m: // used to show/hide the add button – (void)setEditing:(BOOL)editing animated:(BOOL)animate { [super setEditing:editing animated:animate]; if(editing) { self.navigationItem.leftBarButtonItem = […]

NSFetchedResultsController在合并“NSManagedObjectContextDidSaveNotification”后没有显示所有结果

我有一个NSFetchedResultsController用谓词获取对象: isTrash == NO 大多数情况下,这是按预期工作的,但是当一个对象被取消时,取出的结果控制器不会取出这个未被分离的对象。 怎么了?

NSFetchedResultsController预先添加一行或一部分

我有一个UITableView填充一个标准的NSFetchedResultsController。 不过,我想预先安排一个行或一个部分(最好行,但要么真的工作得很好)。 我现在可能看到的唯一方法就是在处理NSFetchedResultsController中的数据的部分/行时,手动重写所有的NSIndexPath,以诱使它看到索引0处的部分,并以索引0处的行开始。似乎是一个非常糟糕的想法,很快就会让人困惑,所以我想避免这种情况。 一个很好的例子就是在官方的Twitter应用程序中,当你第一次启动时,我会引导你添加朋友列表中的一些人。 红色部分几乎是我想要实现的,而我假定的黄色部分是来自同一节中的NSFetchedResultsController的结果(尽pipe它们的自定义样式可能是单独的部分)。

核心数据重置

我正在重新设置coreData中的数据,下面是我的代码来重置CoreData中的数据 – (void) resetApplicationModel { __managedObjectContext = nil; __managedObjectModel = nil; __persistentStoreCoordinator = nil; _allPageViewController.controller = nil; NSError *error; NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"abc.sqlite"]; if ([[self.managedObjectContext persistentStoreCoordinator] removePersistentStore:[[[self.managedObjectContext persistentStoreCoordinator] persistentStores] lastObject] error:&error]) { // remove the file containing the data if([[NSFileManager defaultManager] removeItemAtURL:storeURL error:&error]) { //recreate the store like in the appDelegate method if([self.persistentStoreCoordinator […]

NSFetchedResultsController:删除1行崩溃的应用程序

从NSFetchedResultsController提供的UITableView中删除一行会导致我的应用程序崩溃。 错误是: *断言失败 – [UITableView _endCellAnimationsWithContext:],/ SourceCache /UIKit/UIKit-2903.23/UITableView.m:1330 *终止应用程序,由于未捕获exception“NSInternalInconsistencyException”,原因:“无效的更新:在0节中的行数无效。更新(1)后,现有节中包含的行数必须等于包含在更新之前的那个部分(1),加上或者减去从该部分插入或者删除的行数(0插入,1个删除)以及加或者减去移入或移出该部分的行数(移入0,0搬出)。' 我只想轻扫即可删除。 我的删除代码是这样的: – (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { [self.tableView beginUpdates]; SequenceData *sd = [self.fetchedResultsController objectAtIndexPath:indexPath]; [self.managedObjectContext deleteObject:sd]; [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; [self.tableView endUpdates]; } 我的NSFetchedResultsController的设置就像在Ray Wanderlich的教程中一样( http://www.raywenderlich.com/999/core-data-tutorial-for-ios-how-to-use-nsfetchedresultscontroller ) 行数取决于: – (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { id sectionObjects = [[self.fetchedResultsController sections] objectAtIndex:section]; NSInteger nbObjects = [sectionObjects numberOfObjects]; […]

将额外的行添加到由NSFetchedResultsControllerpipe理的UITableView

我在我的应用程序中使用UITableViewController作为表,并且我添加了一个NSFetchedResultsController来提供数据在表中显示(设置self为委托)。 不过,我想添加一个唯一的单元格作为表的最后一个单元格,与NSFetchedResultsController谓词产生的项目无关,我希望这个单元格始终位于表格的底部。 我已经尝试在表视图数据源中简单地添加1到这些方法: – (NSUInteger)numberOfSectionsInTableView:(UITableView *)sender { return [[self.fetchedResultsController sections] count] + 1; } – (NSUInteger)tableView:(UITableView *)sender numberOfRowsInSection:(NSUInteger)section { return [[[self.fetchedResultsController sections] objectAtIndex:section] numberOfObjects] + 1; } 然后捕捉这样的额外行的情况下(表只有1节): – (UITableViewCell *)tableView:(UITableView *)sender cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == [self.fetchedResultsController.fetchedObjects count]) { //Generate the last cell in table. } else { //Generate the rest of the […]

UITableViewRowAnimation被忽略

我正在使用NSFetchedResultsController来填充我的表。 我的表中的数据按升序排列(最新的消息在底部)。 更多的数据通过“无限滚动”加载到顶部:例如当用户滚动到顶部时,更多的消息被加载。 我的NSFetchedResultsControllerDelegate像往常一样定义,正如苹果文档中推荐的那样:通过插入新行 – (void)controller:(NSFetchedResultsController*)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath*)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath*)newIndexPath { switch(type) { case NSFetchedResultsChangeInsert: NSLog(@"insertion at row %d", newIndexPath.row); [self.table insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationNone]; break; 现在,这是我的问题:插入新行时,它们总是以滑动“向下”的方式animation。 在无限滚动向上看起来不好。 无论我传递UITableViewRowAnimationNone , UITableViewRowAnimationTop还是UITableViewRowAnimationBottom作为参数,都会发生这种情况 – 该选项似乎完全被忽略。 任何想法如何正确animation表?