簡體   English   中英

使用NSPredicate的不同對象

[英]Distinct Object using NSPredicate

我有一個自定義對象的NSArray。 考慮自定義對象具有PageNumber屬性。 我想用“ customObject.PageNumber不同”的條件來過濾我的NSArray。

我知道我可以遍歷數組並消除具有重復的pageNumbers的對象。 但是,有什么簡單的方法嗎? 我努力了,

[myarray valueForKeyPath:@"distinctUnionOfObjects.pageNumber"];

它給了我唯一的頁碼(例如7、8、9)。 但是我想要自定義對象本身,而不僅僅是頁面編號。 任何謂詞都能幫助我嗎?

我創建了一個簡單的庫,稱為Linq to ObjectiveC,該庫是使這類問題更容易解決的方法的集合。 在您的情況下,您需要使用Linq-to-ObjectiveC不同的方法:

NSArray* itemsWithUniquePageNumbers = [items distinct:^id(id item) {
    return [item pageNumber];
}];

這將返回一個對象數組,每個對象都有唯一的頁碼。

是的,借助NSPredicate

customObject=[(NSArray*)[myArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self.PageNumber==%d",pageNumber]] lastObject];
//pageNumber is an integer

過濾后的數組是您的自定義對象的NSArray ,這是使用謂詞進行過濾的結果。 由於您的頁碼是唯一的,因此它將僅返回一個對象的數組。 我們通過傳遞lastObject消息來實現。

請參閱: http : //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/predicates.html#//apple_ref/doc/uid/TP40001798-SW1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM