Swift Core Data with for循环只保存数组中的最后一项

时间:2016-04-06 00:45:08

标签: for-loop core-data

一位体操运动员与很多人见面。有人可以提供一些关于我如何为每个体操运动员设置会面的信息。它打印出阵列中的每个体操运动员,但只会将分配给最后的体操运动员。

newMeet.meetName = "Winter Classic"
newMeet.meetDate = "Sat October 26, 2016"
newMeet.meetDateSort = "2016-09-26"
newMeet.meetTime = "02:00 PM"
newMeet.meetLocation = "Phoenix, AZ"
newMeet.meetStatus = "Active"

let request = NSFetchRequest(entityName: "Gymnast")

request.predicate = NSPredicate(format: "isActive = %@", "Yes")        
do {

            let results = try AD.managedObjectContext.executeFetchRequest(request) as! [Gymnast]

            for result in results {

                let newMeets = result.meets?.mutableCopy() as! NSMutableSet

                newMeets.addObject(newMeet)

                result.meets = newMeets.copy() as? NSSet
                print("\(result.fullName!)")
            }


        } catch {

            fatalError("Failed to save data")

        }

       AD.saveContext()

       self.navigationController?.popViewControllerAnimated(true)

1 个答案:

答案 0 :(得分:1)

您将关系描述为GymnastMeetMeet。如果它是一对多关系,则意味着每个Gymnast只能与单个Gymnast相关联,尽管每个Meet可以与多个Meet相关联}。

如果您对关系的描述是正确的,那么您所看到的正是预期的结果。由于每个Gymnast只能有一个Meet,因此每次通过循环都会重新分配该关系与上一次传递中的关系。

我猜这种关系应该是多对多,而不是一对多,因为每个Gymnast可能涉及多个{{1}}。