2012-10-25 77 views
0

我在尋找的是一種簡潔的方式來獲取由其關係唯一標識的核心數據對象。例如,考慮到數據模型:獲取核心數據對象,其中多對多關係包含集合中的所有對象

enter image description here

...並給定一組NSManagedObject節點,我想取一個三角形,或至少知道,如果存在,像這樣一個TriangleEntity:

NSSet *nodeSet = // a set of 3 NSManagedObject*s 
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"TriangleEntity"]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"corners CONTAINS ALL %@", nodeSet]; 

我不認爲CONTAINS ALL是正確的語法 - 我知道,我可能只是解壓的NSSet並獲取

@"corners CONTAINS %@ AND corners CONTAINS %@ AND corners CONTAINS %@", setObj1, setObj2, setObj3 

...但這似乎很愚蠢。有沒有更優雅的解決方案?

回答

1

以下謂詞找到其中所有角都在給定的組三角形:

[NSPredicate predicateWithFormat:@"ALL corners IN %@", nodeSet] 

nodeSet可以是NSSetNSArray

+0

美麗。你能指出蘋果文檔以供參考嗎?或者這只是體驗的聲音? –

+1

@SamHatchett:在[Predicate Format String Syntax]中記錄了「ALL」和「IN」(https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html# // Apple_ref/doc/uid/TP40001795-CJBDBHCB)中的「Predicate Programming Guide」。如何正確地結合這些是我的案例經驗的一個問題。 –

+1

'控制檯中的NSPredicate(格式:「所有聯繫人IN%@」,selectedContacts)'導致與「不支持謂詞」崩潰。 'selectedContacts'是NSManagedObjects的Swift數組。這也是一個多對多的關係。有任何想法嗎? – hgwhittle

相關問題