ios - 如何返回 enumerateObjectsUsingBlock 找到的项目?

标签 ios objective-c objective-c-blocks

我有一个 NSMutableOrderedSet。

我需要枚举它,看起来唯一构建到集合上的选项是基于 block 的。所以选择最简单的基于 block 的选项,我有这样的东西......

[anNSMutableOrderedSet enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    if ([(SomeClass*)obj isWhatIWant]) {
        *stop = YES;
        // Ok, found what I'm looking for, but how do I get it out to the rest of the code?        
    }
}]

最佳答案

您可以使用 __block 在完成 block 中分配一些值。

__block yourClass *yourVariable;
[anNSMutableOrderedSet enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    if ([(SomeClass*)obj isWhatYouWant]) {
        yourVariable = obj;
        *stop = YES; 
    }
}]

NSLog(@"Your variable value : %@",yourVariable);

关于ios - 如何返回 enumerateObjectsUsingBlock 找到的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36306877/

相关文章:

ios - 在数组上追加元素后,它只显示在追加方法上,当我们从另一个方法调用时为空 swift 3

objective-c - 无法更新iOS NSManagedObject属性

iphone - 如何增加iPhone中UITabBarItem的大小?

ios - dispatch_queue_set_specific 与获取当前队列

ios - 使用 Swift 跟踪耗时

cocoa-touch - 没有 <UITableViewDelegate, UITableViewDataSource> 的 UITableView 仍然有效!

ios - 不同时间的本地通知重复

ios - iOS8 中弃用的 AudioFileReadPackets

ios - NSBlock 的访问限定符是复制还是弱还是强?

ios - block 和消息