数组始终为空

时间:2012-10-18 18:05:12

标签: iphone objective-c xml

  

可能重复:
  NSMutableArray addObject not working

我正在制作iPhone应用程序,到目前为止,我正在从服务器接收数据,使用该数据创建对象并使用这些对象填充数组。

我的数据是XML格式,并保存为一个字符串,该字符串转换为NSData对象,如下所示:

NSMutableURLRequest *myRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://my.URL/data.php"]];
[myRequest setHTTPMethod:@"POST"];

NSURLResponse *response;
NSError *error = NULL;
NSData *myReturn = [NSURLConnection sendSynchronousRequest:myRequest returningResponse:&response error:&error];
NSString *returnString = [[NSString alloc] initWithData:myReturn encoding:NSASCIIStringEncoding];
 NSData *tempData = [return dataUsingEncoding:NSUTF8StringEncoding];

之后,我执行标准的Objective-C XML事件解析,但在以下方法之前我不会创建任何内容:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if ([elementName isEqual:@"id"])
    {
        hailID = currentValue;
        return;
    }
    if ([elementName isEqual:@"timestamp"])
    {
        timeStamp = currentValue;
        return;
    }
    if ([elementName isEqual: @"lat"])
    {
        hailLat = currentValue;
        return;
    }
    if ([elementName isEqual:@"lng"])
    {
        hailLng = currentValue;
        return;
    }
    if ([elementName isEqual:@"address"])
    {
        address = currentValue;
        return;
    }
    if ([elementName isEqual:@"serviceType"])
    {
        serviceType = currentValue;
        return;
    }
    if ([elementName isEqual: @"hail"])
    {
        Hail *newHail = [[Hail alloc]init];
        newHail.hailID = hailID;
        newHail.hailLat = hailLat;
        newHail.hailLng = hailLng;
        newHail.address = address;
        newHail.timeStamp = timeStamp;
        newHail.serviceType = serviceType;
        [hails addObject:newHail];
        NSLog(@"%u", [hails count]);
        return;
    }

}

hails在头文件中声明,它只是NSMutableArray,容量为10000个项目。 Hail对象是一个单独的类。 NSLog始终返回0,即使我知道XML代码本身有效,并且hail对象存在。

关于为什么hails数组始终为零的任何想法?

编辑:抱歉,我忘了提及hails方法中的-(void)viewDidLoad数组初始化为:

hails = [[NSMutableArray alloc]initWithCapacity:10000];

1 个答案:

答案 0 :(得分:2)

你的冰雹总是零,因为你从未分配+初始化它。你甚至没有在代码中提到它的初始化