2016-04-06 76 views
0

一個體操運動員可以很多符合。有人可以提供一些關於我如何爲每位體操運動員設定見面的信息。它打印每個體操運動員陣列,但會議只分配給最後一名體操運動員。swift核心數據for循環僅保存數組中的最後一項

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) 
+0

你確定你已經正確設置了「to many」關係嗎?如果不是每次你將這個見面分配給一個體操運動員,它都會把它從以前的關係 –

+0

中拿走,我相信我有這樣的感覺,如果我在加載時種下一組測試體操運動員並分配每個見面,它似乎就是我想要的。然後,我可以點擊一名體操運動員並列出所有相關的會面。 – debratton

回答

1

你介紹很多Meet S上的關係,一個Gymnast。如果它是一對多關係,這意味着每個Meet只能與單個關聯Gymnast,儘管每個Gymnast可以與多個Meet關聯。

如果您對關係的描述是正確的,那麼您所看到的正是預期的內容。由於每個Meet只能有一個Gymnast,因此每個通過循環的循環都會重新分配與前一遍中設置的關係。

我猜測這種關係應該是多對多的,而不是一對多,因爲每個Meet都可能涉及多個Gymnast

+0

謝謝湯姆。也許你可以回答更多的問題。我確實有很多很多的東西,我可以在每個底層都使用for循環,但是當我有很多很多的時候,我似乎無法理解如何選擇一個用戶並顯示他們特定的滿足,這就是爲什麼我去了回到一對多。 – debratton

+0

什麼可以用於nspredicate? self.fetchedResultsController =零 讓fetchRequest = NSFetchRequest(的entityName: 「相遇」) 讓sortDescriptor1 = NSSortDescriptor(鍵: 「meetName」,上升:真) fetchRequest.sortDescriptors = [sortDescriptor1] //讓過濾器= NSPredicate(format:「gymnasts.fullName ==%@」,「\(selectedGymnast.fullName!)」) //fetchRequest.predicate = filter let controller = NSFetchedResultsController(fetchRequest:fetchRequest,managedObjectContext:AD.managedObjectContext,sectionNameKeyPath :nil,cacheName:nil) – debratton

+0

你可以把它作爲一個單獨的問題嗎?問題和答案都涉及一些代碼,並且很難在StackOverflow註釋中讀取(和寫入)代碼。 –