0

可能重复:
NSMutableArray addObject 不工作

我正在制作一个 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对象是一个单独的类。总是返回 0 ,NSLog即使我知道 XML 代码本身是有效的,并且hail对象存在。

关于为什么hails数组总是为零的任何想法?

编辑:对不起,我忘了提到hails数组是在-(void)viewDidLoad方法中初始化的:

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

1 回答 1

2

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

于 2012-10-18T18:13:55.310 回答