尝试创建一个新的 CoreData Entity var 以便稍后在我的应用程序中使用

Posted

技术标签:

【中文标题】尝试创建一个新的 CoreData Entity var 以便稍后在我的应用程序中使用【英文标题】:Trying to create a new CoreData Entity var to use later in my app 【发布时间】:2017-01-03 23:41:54 【问题描述】:

现在我有这样的东西:

var currentStatement = Statement()

Where 语句是 CoreData 中的一个实体。它被定义为一个类 var。

稍后我使用该 var 并将其设置为获取的 Statement 实体。

currentStatement = negativeFetchedResultsController.fetchedObjects![indexPath.row]

我创建 currentStatement 的方式是抛出一个错误,这不是致命错误,但我仍然想修复它。

我认为这是我想用来创建 Statement 实体的代码。我在 viewDidLoad 方法中定义它。但问题在于它是在 viewDidLoad 方法中定义的,它不能在其他任何地方使用。

let currentStatement = Statement(context: coreDataStack.managedContext)

如果我希望能够使用 currentStatement var,我应该如何定义它,因为

var currentStatement = Statement()

这不是正确的做法。

【问题讨论】:

【参考方案1】:

您需要将currentStatement 声明为可选项。您不能使用 Statement() 对其进行初始化,因为它不会调用指定的初始化程序。但是在您拥有托管对象上下文之前,您不能调用指定的初始化程序。将其设置为可选可以通过在初始化拥有对象时不需要您初始化变量来解决这种情况。

完成后,更改viewDidLoad 中的行,为其分配一个值。类似的东西

self.currentStatement = Statement(context: coreDataStack.managedContext)

(请注意,self. 在此处不是必需的,但可以使其更清晰)。

【讨论】:

所以这样声明? var currentStatement = Statement()? 这似乎会产生一个错误,说我不能这样做。 不,将其声明为可选但不要赋值var currentStatement: Statement?

以上是关于尝试创建一个新的 CoreData Entity var 以便稍后在我的应用程序中使用的主要内容,如果未能解决你的问题,请参考以下文章

为现有实体创建新的 CoreData 属性时 Swift 崩溃

CoreData 对多的可选关系永远不能为零?

如何一起使用Codable和Coredata?

CoreData多个NSPersistentContainer实例导致Multiple NSEntityDescriptions +entity unable disambiguate的解决

CoreData - 更新模型类而不是创建新的

即使没有更多实体,CoreData/Entity 错误也不会消失