NSXMLParserのメソッドを実装し、XMLドキュメントを解析するクラスがあります。クラスはいくつかのxmlドキュメントを解析するために使用されるため、クラスに渡されるキーは変更されます。
ドキュメントを解析しているとき、didStartElementとdidEndElementがキーと一致することを確認してから、foundCharactersで文字列をNSDictionaryに保存しています。NSDictionaryは、セレクターを介して代理人に返されます。
問題はfoundCharactersメソッドにあり、保存される文字列はドキュメント内の文字列の一部です。
私が考えているのは、キーごとにNSStringを作成し、foundCharactersで、そのキー用に動的に作成された文字列に文字列を追加することです。
これが私の配列です。
NSArray *items = [NSArray arrayWithObjects:@"id", @"time", @"newtime", @"title", @"html", @"image", @"url", nil];
これは、次のメソッドでパーサーに渡されます。
-(void) parseArticles:(NSString *)url keys:(NSArray *)findKeys containingString:(NSString *)containing withDelegate:(id)aDelegate {
keys = findKeys;
[self setDelegate:aDelegate];
responseData = [NSMutableData data];
NSURL *baseUrl = [NSURL URLWithString:url];
NSLog(@"Loading URL: %@", url);
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
NSURLRequest *request = [NSURLRequest requestWithURL:baseUrl];
(void)[[NSURLConnection alloc] initWithRequest:request delegate:self];
}
これが私のfoundCharactersメソッドです
-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
for(NSString *toFind in keys){
if([currentItem isEqualToString:toFind]) [item setObject:string forKey:toFind];
}
}