gpt4 book ai didi

ios - 设置数组中所有对象的 boolean 属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:16 25 4
gpt4 key购买 nike

我有一个名为 PhotoItem 的模型类。其中我有一个 BOOL 属性 isSelected

@interface PhotoItem : NSObject

/*!
* Indicates whether the photo is selected or not
*/
@property (nonatomic, assign) BOOL isSelected;

@end

我有一个 NSMutableArray 保存这个特定模型的对象。我想做的是,在一个特定的事件中,我想将数组中所有对象的bool 值设置为true 或false。我可以通过遍历数组并设置值来做到这一点。

我尝试使用:

[_photoItemArray makeObjectsPerformSelector:@selector(setIsSelected:) withObject:[NSNumber numberWithBool:true]];

但我知道这行不通,但事实并非如此。此外,我不能将 true 或 false 作为其中的参数传递(因为它们不是对象类型)。因此,为了解决这个问题,我实现了一个自定义公共(public)方法,例如:

/*!
* Used for setting the photo selection status
* @param selection : Indicates the selection status
*/
- (void)setItemSelection:(NSNumber *)selection
{
_isSelected = [selection boolValue];
}

这样调用它:

[_photoItemArray makeObjectsPerformSelector:@selector(setItemSelection:) withObject:[NSNumber numberWithBool:true]];

它工作得很好。但我的问题是,有没有更好的方法可以在不实现自定义公共(public)方法的情况下实现这一点?

最佳答案

Is there any better way to achieve this without implementing a custom public method?

这听起来像是在征求意见,所以这是我的意见:保持简单。

for (PhotoItem *item in _photoItemArray)
item.isSelected = YES;

当您可以编写任何人都能立即理解的代码时,为什么要通过晦涩的方法绕弯路混淆简单的事情?

做同样事情的另一种方法是:

[_photoItemArray setValue:@YES forKey:@"isSelected"];

这不需要自定义额外的 setter 方法,因为 KVC 会为您进行拆箱。

但我再次投票反对使用此类结构。我认为它们会分散您的注意力,使您无法理解简单的含义并使开发人员感到困惑。

关于ios - 设置数组中所有对象的 boolean 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33013868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com