【发布时间】:2014-07-15 16:23:22
【问题描述】:
我有一个连接到 FRC(获取结果控制器)的 tableView,我还有两个上下文,即在私有队列中初始化的 backgroundContext 和在主队列中初始化的 mainContext。我还设置了 didSaveNotification 将对象从一个上下文传递到另一个上下文。当我在 backgroundContext 中保存一些数据时,它会成功保存并 FRC 更新,但如果我再次重复该过程,应用程序会因错误而崩溃
'ALL 或 ANY 运算符的左侧必须是 NSArray 或 NSSet。'
保存是通过模态显示的形式完成的。如果出现在其他 viewControllers 中,相同的 viewController 可以正常工作。但只在一个特定的地方崩溃。但是除了展示表单之外,没有其他额外的事情正在做。
这是我的完整崩溃报告。
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'ALL 的左侧 或 ANY 运算符必须是 NSArray 或 NSSet。 * 首先抛出调用栈:( 0 CoreFoundation 0x0000000103575495 exceptionPreprocess + 165 1 libobjc.A.dylib
0x0000000102fbb99e objc_exception_throw + 43 2 基础
0x00000001003c706b -[NSPredicateOperator performOperationUsingObject:andObject:] + 826 3 基础
0x00000001003c6c1e -[NSComparisonPredicate evaluateWithObject:substitutionVariables:] + 314 4 基础
0x00000001003c6ae2 -[NSPredicate evaluateWithObject:] + 19 5
核心数据 0x0000000102d61d06 -[NSFetchedResultsController(PrivateMethods)_objectInResults:] + 102 6 CoreData 0x0000000102d630f7 -[NSFetchedResultsController(PrivateMethods) _preprocessUpdatedObjects:insertsInfo:deletesInfo:updatesInfo:sectionsWithDeletes:newSectionNames:treatAsRefreshes:] + 519 7 CoreData 0x0000000102d642d5 -[NSFetchedResultsController(PrivateMethods) _managedObjectContextDidChange:] + 1781 8 CoreFoundation 0x00000001035cad9c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER + 12 9 核心基础 0x000000010352d51d _CFXNotificationPost + 2381 10 基础 0x000000010035b7fa -[NSNotificationCenter postNotificationName:object:userInfo:] + 68 11 CoreData
0x0000000102c9048a -[NSManagedObjectContext(_NSInternalNotificationHandling)_postObjectsDidChangeNotificationWithUserInfo:] + 74 12 核心数据 0x0000000102d16c8b -[NSManagedObjectContext(_NSInternalChangeProcessing) _createAndPostChangeNotification:withDeletions:withUpdates:withRefreshes:] + 331 13 核心数据 0x0000000102c8c9cc -[NSManagedObjectContext(_NSInternalChangeProcessing)_postRefreshedObjectsNotificationAndClearList] + 108 14 核心数据 0x0000000102c8c5e4 -[NSManagedObjectContext(_NSInternalChangeProcessing) _processRecentChanges:] + 2804 15 CoreData 0x0000000102c663cb _performRunLoopAction + 267 16 CoreFoundation
0x0000000103540dc7 CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 23 17 核心基础 0x0000000103540d37 __CFRunLoopDoObservers + 391 18 CoreFoundation 0x0000000103520522 __CFRunLoopRun + 946 19 CoreFoundation
0x000000010351fd83 CFRunLoopRunSpecific + 467 20 图形服务
0x00000001037ecf04 GSEventRunModal + 161 21 UIKit
0x00000001011bde33 UIApplicationMain + 1010 22 Expense_Manager
0x0000000100001d13 main + 115 23 libdyld.dylib
0x000000010420c7e1 start + 0 ) libc++abi.dylib: 终止于 NSException 类型的未捕获异常
提前致谢。
【问题讨论】:
-
谓词是什么样的?
-
request = [NSFetchRequest fetchRequestWithEntityName:@"ExpenseTransactions"]; predicate =[NSPredicate predicateWithFormat:@"category = %@",self.passedCategoryObj];Category 和 ExpenseTransactions 是具有一对多关系的两个实体。 -
你能在
self.passedCategoryObj崩溃的时候退出吗?我的猜测是nil -
它不是 nil ,我记录了它。如果它有帮助, cellForRowAtIndexPath 确实会被调用,并且它在重新加载表的途中崩溃了。
-
这是什么线程?
标签: ios iphone objective-c core-data nsfetchedresultscontroller