私は、コアデータの多対多関係の関係値を取得しようとしています。 私は2つのエンティティPersonとAddressが必要です。 Personは複数のアドレスを持つことができ、名前には&の2つの属性があります。アドレスにはCityという属性が1つしかありません。ここでIOS Swiftのコアデータの多対多関係を取得する方法は?
は、私は値
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?
}
に設定されている方法である方法です以下のような何かをする印刷のこの
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>)
任意の助けいただければ幸いです。前もって感謝します。
あなたのモデルで逆の関係を作成する方がはるかに簡単です。したがって、アドレスから逆の人への逆です。それから、単純に 'address.person = person'を設定します。Core Dataはあなたのための前方関係を世話します – Paulw11
@ Paulw11私はすでにデータモデルで逆の関係を設定しています。私の質問はNSSetから文字列を取得する方法ですか? –
'let someAddress = address.allObjects.first' - すでにこのコードがあります。それで、単純に 'print(someAddress.city)'のようなもの – Paulw11