2017-05-27 2 views
1

NSSetにいくつかのオブジェクトを保存しようとしていますが、最後のオブジェクトだけが保存されています。私のサンプルソースコードは1対多の関係のコアデータは、最後のオブジェクトのみを保存します。その他のものがありません

func saveData(){ 
    let appDelegate = 
    UIApplication.shared.delegate as! AppDelegate 
    let managedContext = appDelegate.managedObjectContext 

    let personEentity = NSEntityDescription.entity(forEntityName: "PersionalDetails", 
             in:managedContext) 
    let person = PersionalDetails(entity: personEentity!, 
        insertInto: managedContext) 

    let favourateEentity = NSEntityDescription.entity(forEntityName: "Favourites", 
               in:managedContext) 
    let favourate = Favourites(entity: favourateEentity!, 
           insertInto: managedContext) 

    person.name = "Ragul" 
    person.age = 28 
    person.mobileNumber = "0000000000" 
    person.sex = "male" 
    for i in 0..<5{ 
    favourate.movie = "Some movie" + "\(i)" 
    favourate.actor = "Some actor" + "\(i)" 
    favourate.song = "some song" + "\(i)" 
    favourate.person = person 
    } 
    do { 
    try managedContext.save() 
    } catch let error as NSError { 
    print("Could not save \(error), \(error.userInfo)") 
    } 
} 

このエラーから抜け出すための案内です。

答えて

3

forループの中で同じオブジェクトのプロパティを設定しているので、最後のオブジェクトを取得するのは、ループの繰り返しで毎回Favouritesという新しいインスタンスを作成する必要があります。最後に作成したオブジェクトではありません。

for i in 0..<5{ 
    let favourate = Favourites(entity: favourateEentity!, insertInto: managedContext) 
    favourate.movie = "Some movie" + "\(i)" 
    favourate.actor = "Some actor" + "\(i)" 
    favourate.song = "some song" + "\(i)" 
    favourate.person = person 
} 
+0

素早い応答ありがとう – Ragul

+0

@Ragul Welcome mate :) –

0

エンティティの新しいインスタンスを作成します。

for i in 0..<5{ 

    let favourateEentity = NSEntityDescription.entity(forEntityName: "Favourites", 
               in:managedContext) 
    let favourate = Favourites(entity: favourateEentity!, 
           insertInto: managedContext) 

    favourate.movie = "Some movie" + "\(i)" 
    favourate.actor = "Some actor" + "\(i)" 
    favourate.song = "some song" + "\(i)" 
    favourate.person = person 

} 
関連する問題