从数组中,我想创建一个新的可变数组,其中包含符合特定条件的所有项目。那不是问题。问题是检查数组是否为空。
if (!theDates]) {/*do something*/}
无论如何,它都会变回正面,因为创建了可变数组。但是
if (![theDates objectAtIndex:0])
{
/* nothing got added to the array, so account for that */
}
else
{
/* do something with the array */
}
它崩溃了。
答案 0 :(得分:5)
这会崩溃,因为虽然你已经分配了数组,但它仍然是空的。第[theDates objectAtIndex:0]
行试图访问数组的第一个对象,由于你的数组还没有,它会崩溃。
要检查数组的完整性,请执行以下操作:
if (theDates.count > 0)
{
//Do something
id object = theDates[0]; //this for sure won't crash
}
答案 1 :(得分:1)
使用[theDates count] > 0
。您正在访问一个可能不存在的元素,因此当它为空时会崩溃。
答案 2 :(得分:0)
if (theDates != nil){
if (theDates.count > 0){
'do something'
}
}
这应检查null数组,然后检查空数组,以防止出现nullpointerexception
答案 3 :(得分:0)
或者您可以使用lastObject方法,如果数组为空,则返回nil
if (![theDates lastObject]) { do something }
答案 4 :(得分:0)
if( (theDates!=nil) && (theDates.count > 0))
{
//We have and existing array and something in there..
}
答案 5 :(得分:0)
这样可以正常工作..
if (!URarray || !URarray.count){
// write code here
}