我正在制作一个 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];