gpt4 book ai didi

ios - 来自核心数据的 SQL 类型提取请求

转载 作者:行者123 更新时间:2023-11-28 14:11:43 24 4
gpt4 key购买 nike

虽然有类似的话题,但是在stack overflow中并没有明确的答案,我将在下面描述这个问题。为简单起见,我将简化实体。所以:核心数据中有两个实体:

名为 Person 的第一个实体具有以下属性:
名字

城市

第二个实体:国家/地区,具有以下属性:
城市
资本

想法是,在一个 View Controller 中,用户通过表单为第二个实体添加值 - 为国家/地区填写城市和首都信息。在其他 View Controller 中,用户填写名字和姓氏,但从已经从其他 View Controller 中添加的数据填充的选择器 View 中选择城市。

在第三个 View Controller 中,我想获取第一个为其添加资本的实体( TableView Controller 中的所有信息),例如如果第一个实体包含数据:
John |琼斯 |芝加哥
默认情况下,第二个应该包含一行数据:
芝加哥 |华盛顿

如何将“Washington”分配给“John”?

类似这个问题,但没有明确的答案:Selecting columns from different entities

最佳答案

我想出了下一个数据库方案:

Entity:
City
Attributes:
id: Integer 16
name: String
Relationships:
[o] capitalOfCountryOptional: Country, inverse: capital
[o] country: Country, inverse: cities
[m] people: Person, inverse: city

Country
Attributes:
id: Integer 16
name: String
Relationships:
[o] capital: City, inverse: capitalOfCountryOptional
[m] cities: Person, inverse: city

Person
Attributes:
id: Integer 16
firstName: String
flastName: String
Relationships:
[o] city: City, inverse: people

Xcode screenshot

一旦你需要一些人的信息并且你知道 id:

现在您可以创建所有需要的对象并设置为关系:

let country = ... Ukraine
let city = ... Lviv
let capital = ... Kyiv
let person = ... John Doe

country.capital = capital
city.country = country
person.city = city

然后您需要保存您的上下文,然后您可以检索人员信息:

import CoreData
public class MOPerson: NSManagedObject {
static func getPerson(id: Int16) -> MOPerson? {
let request: NSFetchRequest<MOPerson> = MOPerson.fetchRequest()
request.predicate = NSPredicate(format: "\(#keyPath(MOPerson.id)) = %@", NSNumber(int16: id))
request.fetchLimit = 1
let result: MOPerson? = (try? CoreDataController.shared.managedContext.fetch(request))?.first
return result
}
}

例子:

if let person = MOPerson.getPerson(id: 1) {
print("Person: \(person.firstName), capital: \(person.city?.country?.capital?.name ?? "not defined")")
}

关于ios - 来自核心数据的 SQL 类型提取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52466892/

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