gpt4 book ai didi

ios - Objective-C 数组文字 - 避免添加 nil 对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:23 26 4
gpt4 key购买 nike

使用新的 Objective-C 数组文字 ...

for (UIView *view_ in @[self.myView01, self.myView1, self.myView2]) { ...

偶尔有一个myView*对象为nil,导致报错...

-[__NSPlaceholderArray initWithObjects:count:]: 尝试从 objects[0] 中插入 nil 对象

问题

在将这 3 个对象添加到数组之前,是否有一种很好的快捷方式来检查它们?

最佳答案

需要明确的是,当您使用文字时,您并不是在向数组中添加对象,而是在初始化数组。你可以这样做:

NSArray *array = @[
(self.myView01 ? self.myView01 : [NSNull null]),
(self.myView1 ? self.myView1 : [NSNull null]),
(self.myView2 ? self.myView2 : [NSNull null]),
];

for (UIView *view_ in array) {
if (view_ != [NSNull null]) {
// DO SOMETHING
}
}

但是在您的循环中,您必须将要迭代的每个对象与 [NSNull null] 进行比较。或者,您不能使用文字并构建 NSMutableArray。

NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:3];

if (self.myView01) {
[array addObject:self.myView01];
}

if (self.myView1) {
[array addObject:self.myView1];
}

if (self.myView2) {
[array addObject:self.myView2];
}

for (UIView *view_ in array) {
// DO SOMETHING
}

这实际上取决于您认为什么更具可读性。

关于ios - Objective-C 数组文字 - 避免添加 nil 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16390642/

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