2013-05-06 24 views
3

隨着新目標C數組文本...Objective-C的數組文本 - 避免添加零對象

爲(UIView的*在@ [self.myView01,self.myView1,self.myView2 view_ ]){... }

偶爾MyView的之一*對象是nil,這會導致錯誤...

- [__ NSPlaceholderArray initWithObjects:計數:]:試圖插入零對象來自對象[0]

問題

是否有將它們添加到陣列之前檢查3個對象的一個​​很好的捷徑呢?

+0

會爲你設置你的視圖爲'NSNull'嗎? – JustSid 2013-05-06 01:00:05

回答

1

如果你的目標是創建陣列簡單

NSAssert (self.myView0 && self.myView1 && self.myView2); 

作品前進行檢查。如果你想創建數組即使一個值nil使用:

(self.myView0 ? self.myView0 : [NSNull null]) 
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 
} 

這真的取決於你認爲更可讀。