私はコアデータとその中に3つのオブジェクトを持っています。私はオブジェクトがあるとしましょう:Parent, Child, Item
。 、Swift Coreデータは2回目のデータを保存できません:Cocoa error 1560
func insert(parent : Parent) {
// remove all old Childs
parent.removeChild(Parent.childs)
for data in datas {
let child = self.newChildFromData(data)
for data2 in datas2 {
let item = self.newItemFromData2(data2)
child.addItem(item)
}
parent.addChild(child)
}
do {
try managedObjectContext.save()
} catch {
print(error.debugDescription)
}
}
- NOTEこれが実際のコードではありません。
Parent
はChild
はParent have one to many relationship with Child Child have one to many relationship with Item Parent: - var childs : Set<Child> Child: - var items : Set<Item>
、他の単語と私はメソッドを持っている内部のデータを格納するための、
Set<Item>
持って、Set<Child>
持っていますこの問題を理解するには十分に近いです。
私が初めて(空のデータベース)のためのメソッドを実行すると、それは通常の仕事が、私は二度目のためにそれを実行すると、それは私がそれは何ができるか
The operation couldn’t be completed. (Cocoa error 1560.)
Error Domain=NSCocoaErrorDomain Code=1560 "(null)" UserInfo={NSDetailedErrors=(
"Error Domain=NSCocoaErrorDomain Code=1570 \"The operation couldn\U2019t be completed. (Cocoa error 1570.)\" UserInfo={NSValidationErrorKey=server, NSLocalizedDescription=The operation couldn\U2019t be completed. (Cocoa error 1570.), NSValidationErrorObject...
をエラー与えますか?
1560は複数のエラーがあることを意味します。 1570は "NSValidationMissingMandatoryPropertyError"の値です。これは、おそらくあなたが拘束条件を満たしているが、あなたのコードがそれをnilに設定している拘束条件付きのプロパティを持っていることを意味します。 – pbasdf
はい、私はそれについて読んでいますが、最初にメソッドを実行するとエラーなしで要素が格納されますが、同じオブジェクトで2回目にこのエラーが発生したのはなぜですか?私は古い値を取り除くことに何か問題があると思うが、私は何がわからない。 –
すべての子供に親が必要であるという制約がありますか? parent.removeChild(parent.childs)は、Childオブジェクトが親を持たないことを意味します(実際にはChildオブジェクトを削除しません)。 – pbasdf