我的NSArray中有什么?

时间:2014-02-19 12:31:18

标签: ios objective-c

我有一个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

4 个答案:

答案 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。