我要瘋了。出於某種原因,我找不到一個如何使用NSSet(cocoa)的objectsPassingTest:函數的完整示例。在任何人將我指向關於街區的頁面之前,我已經看到了這些。給出的示例僅顯示如何聲明函數,而不是運行它的塊,以及當我用自己的代碼嘗試他們的示例時,它不起作用。我只想看到一些關於如何使用該函數的工作示例,然後我就可以爲自己解決這個問題。NSSet的objectsPassingTest函數的例子嗎?
15
A
回答
30
這是一個簡單的例子。希望能幫助到你。
NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3",@"4",@"5",nil];
NSLog(@"%@",set); // Output (3,1,4,2,5) ... all objects
NSSet *o = [set objectsPassingTest:^(id obj,BOOL *stop){
NSString *so = (NSString *)obj;
int intval = [so intValue];
// accept objects less or equal to two
BOOL r = (intval <= 2);
return r;
}];
NSLog(@"%@",o); // Output (1,2) only objects smaller or equal to 2
4
我從來沒有使用過塊。但我想這是它的工作原理。
NSSet *set = [NSSet setWithObjects:@"FooBar", @"Foo", @"Bar", @"Baz", nil];
NSSet *fooSet = [set objectsPassingTest:^(id obj, BOOL *stop) {
BOOL testResult = NO;
NSString *objStr = (NSString *)obj;
if ([objStr hasPrefix:@"Foo"]) {
testResult = YES;
}
if ([objStr hasSuffix:@"Bar"]) {
testResult = YES;
}
return testResult;
}];
這將創建一組與@ 「FooBar的」 @ 「foo」 和@ 「酒吧」,因爲只有通過測試(即返回YES)。
相關問題
- 1. 使用objectsPassingTest檢查NSSet的速度之間的任何差異:vs containsObject:
- 2. 爲什麼NSArray具有indexOfObjectPassingTest方法而不是像NSSet這樣的objectsPassingTest?
- 3. 計數後NSSet無用嗎?
- 4. 傳遞的NSSet並在主函數值
- 5. 這是一個JavaScript回調函數的例子嗎?
- 6. 這是JavaScript中基本/簡單高階函數的例子嗎?
- 7. NSSet比NSArray更快嗎?
- 8. NSFetchedRequestController的NSSet屬性爲sectionNameKeyPath。可能嗎?
- 9. 不兼容的塊指針類型objectsPassingTest:
- 10. NSSet的NSSet上的核心數據查詢
- 11. XCTAssert NSSet計數
- 12. PHP函數 - 與下面的例子
- 13. 遞歸函數指針。 Stroustrup的例子
- 14. Perl中覆蓋函數的例子
- 15. 整蠱遞歸(尾)函數的例子
- 16. 這個例外的例子不對嗎?
- 17. 對NSSet中的
- 18. 塊用的NSSet
- 19. PHP - 在子實例中調用父函數的父函數
- 20. 你能給我comm.FSKModulator沿與它的階躍函數的例子嗎?
- 21. 有人可以給出在PostgreSQL 9.4中的有序集函數的用例的例子嗎?
- 22. 內省函數是觀察者設計模式的一個例子嗎?
- 23. GHC可以派生函數和應用實例的單子變壓器嗎?
- 24. 任何基本的例子可以幫助我理解函數是對象嗎?
- 25. 「的NSSet」在Objective-C
- 26. 的NSSet,核心數據,正確謂詞
- 27. 驗證數據,並且通過的NSSet
- 28. 核心數據的NSSet問題
- 29. 原型是它的構造函數的一個實例嗎?
- 30. 你好世界的例子嗎?
謝謝,這應該非常有幫助。我在工作中早些時候嘗試了「現狀」,現在即將嘗試並將其適用於自己的代碼。奇怪的是,我確定我嘗試了這種方法,但更多地使用了嵌套函數和點語法,所以也許這就是我的問題所在。 – Ash 2011-03-01 18:17:47