我一直在爭奪這個問題了幾天,覺得我已經找到了問題...的NSXMLParser問題
我使用的是ASIHTTPRequest方法連接到我的PHP腳本,從數據庫中調用請求數據時,從那裏我啓動NSXMLParser委託一切似乎工作正常,我甚至可以NSLog結果,因爲他們得到解析但是,似乎當我嘗試將這些結果放入一個NSMutableArray結果似乎不想進入它..我保持空值..
我希望有人可以給我一個理由爲什麼或如果你能指出我終於解決這個問題,因爲它成爲一個真正的痛苦在後面..
這是我的分析過程
- (IBAction)setRequestString:(NSString *)string
{
//set up address
NSMutableString *databaseURL = [[NSMutableString alloc] initWithString:@"http://127.0.0.1:8888/CodeTest/"];
[databaseURL appendString:string];
//call delegates
NSURL *url = [NSURL URLWithString:databaseURL]; //LIVE mode
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
NSString *responseString = [request responseString]; //Pass request text from server over to NSString
NSData *capturedResponseData = [responseString dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@", responseString);
[self startTheParsingProcess:capturedResponseData];
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
NSLog(@"%@", error);
}
#pragma mark - Parsing lifecycle
//--- Start parsing process using NSXMLParser ---------------->>
- (void)startTheParsingProcess:(NSData *)parserData
{
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:parserData]; //incoming parserDatapassed to NSXMLParser delegate which starts parsing process
[parser setDelegate:self];
[parser parse]; //Starts the event-driven parsing operation.
[parser release];
[self.tableView reloadData];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqual:@"item"]) {
// NSLog(@"Found title!");
itemString = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
[itemString appendString:string];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqual:@"item"]) {
//NSLog(@"ended title: %@", itemString);
[myDataArray addObject:itemString];
NSLog(@"%@", itemString);
NSLog(@"%@", myDataArray);
//TODO: Test release on memory consumption etc
[itemString release];
itemString = nil;
}
}
//--- Finish parsing process using NSXMLParser ---------------->>
它打印此
2011-09-08 08:46:24.424 iCode[1209:207] <?xml version="1.0"?>
<entries>
<item>Honda</item>
<item>Nissan</item>
<item>Mitsubishi</item>
<item>Toyota</item>
<item>Mazda</item>
</entries>
2011-09-08 08:46:24.426 iCode[1209:207] Honda
2011-09-08 08:46:24.426 iCode[1209:207] (null)
2011-09-08 08:46:24.427 iCode[1209:207] Nissan
2011-09-08 08:46:24.427 iCode[1209:207] (null)
2011-09-08 08:46:24.428 iCode[1209:207] Mitsubishi
2011-09-08 08:46:24.428 iCode[1209:207] (null)
2011-09-08 08:46:24.430 iCode[1209:207] Toyota
2011-09-08 08:46:24.431 iCode[1209:207] (null)
2011-09-08 08:46:24.431 iCode[1209:207] Mazda
2011-09-08 08:46:24.432 iCode[1209:207] (null)
你能告訴的地方,那裏的myDataArray聲明? –