NSArray 填充 bool 对象

发布于 2024-08-31 04:20:31 字数 59 浏览 3 评论 0原文

我有一个充满布尔值(表示为数字)的 NSArray,我需要测试数组中是否有任何对象等于 1。我该怎么做?

I have an NSArray filled with bools (expressed as a number), and I need to test to see if any object within the array is equal to 1. How can I do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

命比纸薄 2024-09-07 04:20:31

BOOL 不是对象。假设您的意思是一些表示布尔值的对象,例如实现了正确的 isEqual: 的 NSNumber,您可以执行类似 [array containsObject:[NSNumber numberWithBool:YES]] 的操作。

BOOLs are not objects. Assuming you mean some object representing a boolean like NSNumber that implements a proper isEqual:, you could just do something like [array containsObject:[NSNumber numberWithBool:YES]].

何其悲哀 2024-09-07 04:20:31

正如 Chuck 所说,使用 -[NSArray containsObject:[NSNumber numberWithBool:YES]]。作为一个思想实验,这里有一些其他方法来实现目标...

您可以使用 NSPredicate 或使用新的块 API 来完成此操作:

NSArray *myArr //decleared, initialized and filled

BOOL anyTrue = [myArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"boolValue == 1"]].count > 0;

或者

BOOL anyTrue = [myArray indexesOfObjectsPassingTest:^(id obj, NSUInteger idx, BOOL *stop) {
  if([obj boolValue]) {
    *stop = YES;
  }
  return [obj boolValue];
}].count > 0;

您也可以使用键值编码,尽管我不确定它的相对效率:

[[myArray valueForKeyPath:@"@sum.boolValue"] integerValue] > 0;

As Chuck says, use -[NSArray containsObject:[NSNumber numberWithBool:YES]]. As a thought experiment, here are some other ways to accomplish the goal...

You can do this using an NSPredicate or using the new blocks API:

NSArray *myArr //decleared, initialized and filled

BOOL anyTrue = [myArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"boolValue == 1"]].count > 0;

or

BOOL anyTrue = [myArray indexesOfObjectsPassingTest:^(id obj, NSUInteger idx, BOOL *stop) {
  if([obj boolValue]) {
    *stop = YES;
  }
  return [obj boolValue];
}].count > 0;

You can also use Key-Value coding, though I'm not sure of its relative efficiency:

[[myArray valueForKeyPath:@"@sum.boolValue"] integerValue] > 0;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文