隨着新目標C數組文本...Objective-C的數組文本 - 避免添加零對象
爲(UIView的*在@ [self.myView01,self.myView1,self.myView2 view_ ]){... }
偶爾MyView的之一*對象是nil,這會導致錯誤...
- [__ NSPlaceholderArray initWithObjects:計數:]:試圖插入零對象來自對象[0]
問題
是否有將它們添加到陣列之前檢查3個對象的一個很好的捷徑呢?
隨着新目標C數組文本...Objective-C的數組文本 - 避免添加零對象
爲(UIView的*在@ [self.myView01,self.myView1,self.myView2 view_ ]){... }
偶爾MyView的之一*對象是nil,這會導致錯誤...
- [__ NSPlaceholderArray initWithObjects:計數:]:試圖插入零對象來自對象[0]
問題
是否有將它們添加到陣列之前檢查3個對象的一個很好的捷徑呢?
如果你的目標是創建陣列簡單
NSAssert (self.myView0 && self.myView1 && self.myView2);
作品前進行檢查。如果你想創建數組即使一個值nil
使用:
(self.myView0 ? self.myView0 : [NSNull null])
需要明確的是,當您使用的文字,那麼你不需要添加對象的數組,要初始化數組。你可以這樣做:
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
}
這真的取決於你認爲更可讀。
會爲你設置你的視圖爲'NSNull'嗎? – JustSid 2013-05-06 01:00:05