NSFetchedResultsController -[__NSArrayM insertObject:atIndex:]: 对象不能为 nil
NSFetchedResultsController -[__NSArrayM insertObject:atIndex:]: object cannot be nil
我对这个问题做了很多研究,但没有发现任何可以引导我找到解决方案的东西。我正在尝试使用 NSFetchedResultsController
,当我 运行 应用程序时出现此错误:
* 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'* -[__NSArrayM insertObject:atIndex:]: 对象不能零'
*** 首先抛出调用堆栈:
我发现有些人在使用estimatedHeightForRowAtIndexPath
方法时遇到了这个问题,但我没有使用它。
使用异常断点显示它在以下代码块的这一行崩溃:let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedContext, sectionNameKeyPath: "date.theDate", cacheName: nil)
。它没有让它过去。
我下面有一个永远不会执行的打印语句。 managedObjectContext 确实存在。 frc
在 viewDidLoad 中第一次被调用(下面的代码)。我还将包含我的 AppDelegate 代码。
提前致谢!
这是我的相关代码:
import UIKit
import CoreData
class TransactionsViewController: UIViewController, UITableViewDataSource, NSFetchedResultsControllerDelegate {
var containerDelegate: ContainerDelegate?
var managedContext: NSManagedObjectContext!
lazy var frc: NSFetchedResultsController = {
// Initialize Fetch Request
let fetchRequest = NSFetchRequest(entityName: "DailyTransactions")
// Initialize Fetched Results Controller
let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedContext, sectionNameKeyPath: "date.theDate", cacheName: nil)
print("Assigned frc complete.")
// Configure Fetched Results Controller
frc.delegate = self
print("FRC finished")
return frc
}()
frc
首先在 viewDidLoad 中使用:
// Exectue Fetch Request
do {
try self.frc.performFetch()
} catch {
let fetchError = error as NSError
print("\(fetchError), \(fetchError.userInfo)")
}
更新:
在 Fetch Request 上使用排序描述并将部分键路径更改为 nil 后,我解决了这个问题。我什至可以将部分关键路径改回 date.theDate
,它会 运行 正常。
您的托管上下文为零。因此你什么也得不到。这就是为什么它没有被初始化,应该有一个 context ,否则对象无法传播...
在 Fetch Request 上使用排序描述并将部分键路径更改为 nil 后,我解决了这个问题。我什至可以将部分关键路径改回 date.theDate,它会 运行 正常。我的错误要么在其他地方,要么在某种程度上与部分关键路径有关。
我对这个问题做了很多研究,但没有发现任何可以引导我找到解决方案的东西。我正在尝试使用 NSFetchedResultsController
,当我 运行 应用程序时出现此错误:
* 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'* -[__NSArrayM insertObject:atIndex:]: 对象不能零' *** 首先抛出调用堆栈:
我发现有些人在使用estimatedHeightForRowAtIndexPath
方法时遇到了这个问题,但我没有使用它。
使用异常断点显示它在以下代码块的这一行崩溃:let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedContext, sectionNameKeyPath: "date.theDate", cacheName: nil)
。它没有让它过去。
我下面有一个永远不会执行的打印语句。 managedObjectContext 确实存在。 frc
在 viewDidLoad 中第一次被调用(下面的代码)。我还将包含我的 AppDelegate 代码。
提前致谢!
这是我的相关代码:
import UIKit
import CoreData
class TransactionsViewController: UIViewController, UITableViewDataSource, NSFetchedResultsControllerDelegate {
var containerDelegate: ContainerDelegate?
var managedContext: NSManagedObjectContext!
lazy var frc: NSFetchedResultsController = {
// Initialize Fetch Request
let fetchRequest = NSFetchRequest(entityName: "DailyTransactions")
// Initialize Fetched Results Controller
let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedContext, sectionNameKeyPath: "date.theDate", cacheName: nil)
print("Assigned frc complete.")
// Configure Fetched Results Controller
frc.delegate = self
print("FRC finished")
return frc
}()
frc
首先在 viewDidLoad 中使用:
// Exectue Fetch Request
do {
try self.frc.performFetch()
} catch {
let fetchError = error as NSError
print("\(fetchError), \(fetchError.userInfo)")
}
更新:
在 Fetch Request 上使用排序描述并将部分键路径更改为 nil 后,我解决了这个问题。我什至可以将部分关键路径改回 date.theDate
,它会 运行 正常。
您的托管上下文为零。因此你什么也得不到。这就是为什么它没有被初始化,应该有一个 context ,否则对象无法传播...
在 Fetch Request 上使用排序描述并将部分键路径更改为 nil 后,我解决了这个问题。我什至可以将部分关键路径改回 date.theDate,它会 运行 正常。我的错误要么在其他地方,要么在某种程度上与部分关键路径有关。