2015-04-02 50 views
0

我在我的核心數據模型('客戶'< - >>評估')中擁有一對多的關係,在我的評估tableview中,我目前正在按客戶名稱過濾評估。針對特定託管對象進行過濾的謂詞 - Swift

func assessmentFetchRequest() -> NSFetchRequest { 

     let fetchRequest = NSFetchRequest(entityName: "Assessment") 

     let sortDescriptor = NSSortDescriptor(key: "nsDateOfAssessment", ascending: false) 
     fetchRequest.sortDescriptors = [sortDescriptor] 
     fetchRequest.predicate = NSPredicate(format: "client.name == %@", self.client.name) 

     return fetchRequest 
    } 

我想知道怎麼回事,或者如果可能的話,要由特定的管理對象,而不是管理對象的(「名」在這種情況下)過濾屬性。我試圖改變我的謂語:

fetchRequest.predicate = NSPredicate(format: "client.objectID == %@", self.client.objectID) 

但我只是碰到一個未捕獲的異常。

我想改變這一點,因爲它似乎是不好的做法,按名稱過濾,因爲兩個客戶端可能具有相同的名稱,因此具有相同的過濾器結果。

+0

發生了什麼異常? – nhgrif 2015-04-02 20:40:46

+0

它沒有提供太多的信息。我設置了一個斷點,它堅持我執行提取'fetchedResultsController.performFetch(nil)'的地方。 – Leighton 2015-04-02 20:44:55

回答

0

所以我會猜測,對於你排序描述符'nsDateOfAssessment'的鍵名不是核心數據屬性的實際名稱。關鍵應該是屬性的實際名稱。另外,我不會說按名字過濾是不好的做法。也許增加一個額外的參數給你的謂詞,可以幫助查明正確的項目。當然,如果你爲每個實體存儲一個唯一的標識符,這將是一個更清晰的方法。