gpt4 book ai didi

ios - 如何在 IOS Swift 中获取 Core 数据中的一对多关系?

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

我一直在尝试获取核心数据中一对多关系的关系值。我有两个实体“人员”和“地址”。人可以有多个地址,它有两个属性:姓名和年龄。而地址只有一个属性“城市”。

这是我尝试设置值的方法

let managedContext = (UIApplication.sharedApplication().delegate as? AppDelegate)!.managedObjectContext

let entity = NSEntityDescription.entityForName("Person", inManagedObjectContext: managedContext)
let addEntity = NSEntityDescription.entityForName("Address", inManagedObjectContext: managedContext)

let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)

let address = NSManagedObject(entity: addEntity!, insertIntoManagedObjectContext: managedContext)

person.setValue(name, forKey: "name")
person.setValue(age, forKey: "age")
address.setValue(city, forKey: "city")

person.setValue(NSSet(object: address), forKey: "addresses")

do {
try person.managedObjectContext?.save()
people.append(person)
} catch let error as NSError {
print("Could not save \(error)")
}

这就是我的核心数据属性的设置方式

extension Person {

@NSManaged var age: NSNumber?
@NSManaged var name: String?
@NSManaged var addresses: Address?

}

extension Address {

@NSManaged var city: String?
@NSManaged var persons: Person?

}

然后为了在 TableView 中获取数据,我正在尝试执行类似的操作

let person = people[indexPath.row]
let address = person.mutableSetValueForKey("addresses")
print(address.allObjects.first as! Address)

打印的值是这样的

<Address: 0x7f9481f1e290> (entity: Address; id: 0xd000000000040002 <x-coredata://7A4230B9-0EF0-44D5-BBDD-D8E9A3E38F59/Address/p1> ; data: <fault>)

如有任何帮助,我们将不胜感激。提前致谢。

最佳答案

检查它是关系(而不是属性)。并且是多对多。像这样: enter image description here之后,它会像这样:

extension Album {

@NSManaged var createDate: NSDate?
@NSManaged var isDefault: NSNumber?
@NSManaged var name: String?
@NSManaged var order: NSNumber?
@NSManaged var picture: NSData?
@NSManaged var notes: NSOrderedSet? // Attention: NSOrderedSet

}

关于ios - 如何在 IOS Swift 中获取 Core 数据中的一对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37203721/

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