我正在制作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];
答案 0 :(得分:2)
你的冰雹总是零,因为你从未分配+初始化它。你甚至没有在代码中提到它的初始化