gpt4 book ai didi

具有核心数据关系的 iOS 8 Swift NSFetchResult 谓词无法访问内部 ID

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:37 26 4
gpt4 key购买 nike

对 Core Data 很陌生,但我读过我可以获取使用实体关系的数据。现在,来自 Mysql 可能我做了太多假设,但我有 2 个实体设置了它们之间的关系,我无法获取正确的数据。

这是我的两个模型:

@objc(Categories)
class Categories: NSManagedObject {
@NSManaged var category: String
@NSManaged var exp: String
@NSManaged var order: NSNumber
}

@objc(Techniques)
class Techniques: NSManagedObject {
@NSManaged var korean: String
@NSManaged var order: NSNumber
@NSManaged var spanish: String
@NSManaged var categories: Categories
}

在我创建从技术到类别的关系后,Core Data 将此字段添加到 Sqlite 数据库:

ZCATEGORIES - INTEGER

假设我想获取属于类别#3(内部 ZID:3)的所有技术

如果我这样做:

request.predicate = NSPredicate(format: "categories == %@", 3)

它有效。但如果我这样做:

request.predicate = NSPredicate(format: "categories == %@", category.category)

这是行不通的。我知道它不起作用,因为 category.category 是一个字符串,而不是一个整数。

我的问题是:

我是否必须在类别实体中创建自己的关系 ID 字段并进行设置,然后引用如下技术:

request.predicate = NSPredicate(format: "categories == %@", category.categoryID)

?

有没有一种方法可以访问类别的内部 ID 来使这种关系发挥作用?

或者更好的是,在我看来,应该有一个内部机制来检索这些关系,而无需编写类似 SQL 的查询,而只需使用对象,例如:Techniques.categores

谢谢。我在任何地方都找不到好的答案。

最佳答案

您缺少属性名称,因此谓词知道要比较类别类的哪个属性。这样您就不需要使用内部唯一 ID。虽然它可以派生(并且可以工作),但它不是 Core Data 的方式,Core Data 正试图为您抽象该信息。

let categoryPredicate = NSPredicate(format: "categories.category == %@", category.category)

如前所述,建议设置反向关系。它允许 Core Data 保持对象图的一致性,并可用于从类别到它的技术。

关于具有核心数据关系的 iOS 8 Swift NSFetchResult 谓词无法访问内部 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27233151/

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