【发布时间】:2011-05-09 04:31:36
【问题描述】:
一个NSArray被alloc和init后,如果NSArray没有添加任何东西,如何判断它是null还是空?
谢谢。
【问题讨论】:
一个NSArray被alloc和init后,如果NSArray没有添加任何东西,如何判断它是null还是空?
谢谢。
【问题讨论】:
if (array == nil || [array count] == 0) {
...
}
【讨论】:
nil(参见stackoverflow.com/questions/557582/null-vs-nil-in-objective-c)。
nil 对象发送消息在 Objective-C 中被忽略,将产生 0。所以if ([array count] == 0) { ... }就够了。
nil 发送消息会被有效地忽略。好的?它不会像几乎所有其他语言一样崩溃。
NSArray 有 count 方法,一个常见的方法是......
if (![self.myArray count])
{
}
这将检查数组中是否没有任何内容,或者是否设置为 nil。
【讨论】:
虽然我们都抛出了相同的答案,但我想我也会这样做。
if ([array count] < 1) {
...
}
【讨论】:
nil,objc 消息将返回 0——它的定义很好。
还有一个
if(!array || array.count==0)
【讨论】:
if([myarray count]) 检查非空数组和空数组。
【讨论】:
试试这个
if(array == [NSNull null] || [array count] == 0) {
}
【讨论】:
[NSNull null] 是 NSNull 类型的对象。因此,如果array == [NSNull null],则array 是指向该NSNull 单例对象的指针。 [NSNull null 经常用于存储对象(例如在字典或数组中),而 nil 将不被接受。如果array == nil 则意味着array 被清零(指向0x0)。
array == [NSNull null] 不是一个非常有用的检查,因为例如如果alloc 和init 失败,它将是@987654332 @,不是[NSNull null]。鉴于 user403015 概述的场景,[NSNull null] 不是可能出现的场景。
if([arrayName count]==0)
{
//array is empty.
}
else
{
//array contains some elements.
}
【讨论】:
你可以用这个:
if (!anArray || [anArray count] == 0) {
/* Your code goes here */
}
【讨论】:
使用
(array.count ? array : nil)
如果 array = nil 和 [array count] == 0 一样,它将返回 nil
【讨论】:
if (array == nil && [array count] == 0) {
...
}
我使用此代码是因为当我的pickerview 数组为空时遇到问题
我的代码是
- (IBAction)btnSelect:(UIBarButtonItem *)sender { // 52
if (self.array != nil && [self.array count] != 0) {
NSString *select = [self.array objectAtIndex:[self.pickerView selectedRowInComponent:0]];
if ([self.pickListNumber isEqualToString:@"1"]) {
self.textFieldCategory.text = select;
self.textFieldSubCategory.text = @"";
} else if ([self.pickListNumber isEqualToString:@"2"]) {
self.textFieldSubCategory.text = select;
}
[self matchSubCategory:select];
} else {
UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"You should pick Category first"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[myAlertView show];
}
[self hidePickerViewContainer:self.viewCategory];
}
【讨论】: