gpt4 book ai didi

swift - 核心数据返回 0

转载 作者:行者123 更新时间:2023-11-30 13:40:29 25 4
gpt4 key购买 nike

更新:根据评论中的一些建议,我正在使用NSManagedObject Subclassing。所以我的代码完全不同,所以我正在重写问题以更好地反射(reflect)我现在正在做的事情。

所以我的问题是:我正在将非零值保存到核心数据中,但是当我检索一个值时,我得到的值为零。可能出了什么问题?

现在假设我有两个名为 FirstEntity, SecondEntity 的实体,以及两个名为 firstAttribute, secondaryAttribute 的属性。由于我进行了 NSManagedObject 子类化,因此我有两个类,一个名为 FirstEntity ,第二个名为 SecondEntity 。每个类都有两个属性的扩展(firstAttributesecondAttribute)。

保存值:因此,当我保存一个值时,我将使用以下代码:

let number = 100
let firstEntity = NSEntityDescription.insertNewObjectForEntityForName("FirstEntity", inManagedObjectContext: managedObject) as! FirstEntity
firstEntity.firstAttribute = number

检索值:当我尝试接收核心数据中的属性值时,我使用如下代码:

let firstEntity = NSEntityDescription.insertNewObjectForEntityForName("FirstEntity", inManagedObjectContext: managedObject) as! FirstEntity
print(firstEntity.firstAttribute) // This returns zero when I clearly saved a value of 100 above.

我对 Core Data 还很陌生,我已经查找了很多如何在线使用 Core Data 的示例。我仍然对自己可能做错了什么感到困惑。如果需要任何澄清,请在评论中询问,我一定会回复。

潜在错误:所以我正在做的是尝试在函数的 completionHandler 中保存属性值。另外,如果我在completionHandler 中打印变量的值,我会得到该属性的正确值。例如:

someFunction() {
number in // Pretend number is 5000
let firstEntity = NSEntityDescription.insertNewObjectForEntityForName("FirstEntity", inManagedObjectContext: managedObject) as! FirstEntity
firstEntity.firstAttribute = number
print(firstEntity.firstAttribute) // Prints 5000 to the console
}

但是,假设我去访问 completionHandler 外部的 firstAttribute 值,并将该值打印到控制台,得到的值为 0。例如:

class MyClass {
func myFunction() {
let firstEntity = NSEntityDescription.insertNewObjectForEntityForName("FirstEntity", inManagedObjectContext: managedObject) as! FirstEntity
print(firstEntity.firstAttribute) // Prints 0
}
}

我还想提一下,我确保函数中的completionHandler 在调用 MyClass 的 myFunction() 之前已经设置了firstAttribute 的值。

最佳答案

好的,所以我想我找到了答案,因为我创建了太多实体实例。所以我最终做的是创建一个全局常量:

let firstEntity = NSEntityDescription.insertNewObjectForEntityForName("FirstEntity", inManagedObjectContext: managedObject) as! FirstEntity

然后,每当我需要检索或保存值时,我都会引用 firstEntity,因此我没有 FirstEntity 的多个实例。然后我就可以从任何地方访问该值。

关于swift - 核心数据返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35618032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com