我有一个NSArray
已被填充:
NSString *strURL = [NSString stringWithFormat:@"%@%@", @"http://website/getinfo.php?dept=", dept];
NSArray *arrayDetail = [[NSMutableArray alloc] initWithContentsOfURL:[NSURL URLWithString:strURL]];
SQL数据库是空的但是在调用 arrayDetail 后面有“一个对象”,但我不知道这个对象是什么。
我试过了:
NSLog(@"value - %@", [arrayDetail objectAtIndex:0]);
显示的NSLog
是“值 - ”
我试过了:
if ([arrayDetail objectAtIndex:0] == (id)[NSNull null])
{
NSLog(@"null");
}
else
{
//do other stuff
}
但它会跳过'做其他事情'。
我也尝试过:
if ([[arrayDetail objectAtIndex:0] isEqualToString:@""])
但它再次跳过'做其他事情'。
有什么想法吗?
更新:
根据以下建议,我尝试过:
NSLog(@"value - %@", [arrayDetail class])
回复:
值 - __NSCFConstantString
答案 0 :(得分:2)
可能包含转义字符。 &安培;检查NSArray - NSLog(@“Res%@”,arrayDetail);
试试这个:
if ([arrayDetail objectAtIndex:0] == (id)[NSNull null] || [[arrayDetail objectAtIndex:0]length] < 1)
{
NSLog(@"null");
}
else
{
//do other stuff
}
答案 1 :(得分:2)
只有当您的Web服务提供由writeToURL:atomically:方法生成的数组的字符串表示时,该数组才会包含任何有用的内容。
由于通常这不是从Web服务发生的,因此您将获得大块但没有内容。可能它甚至没有初始化,但没有。从而显示出你的行为。
答案 2 :(得分:1)
检查
if ([[arrayDetail objectAtIndex:0] isEqualToString:@""])
而不是
if ([[observationsArrayClass objectAtIndex:0] isEqualToString:@""])
让我知道你的输出。为什么你的输出存储在arrayDetail中时你使用observeArrayClass?
答案 3 :(得分:1)
来自initWithContentsOfURL:
的{{3}}:
[It]如果无法打开位置或者无法将位置的内容解析为数组,则返回[a] nil。