Добавление строк и изображений в NSDictionary с помощью NSXMLParser - PullRequest
0 голосов
/ 22 октября 2010

Я использую NSXMLParser для анализа небольшого XML-файла, содержащего информацию о видео.Одним из элементов в XML является URL, который указывает на миниатюру изображения, связанного с каждым видео.Я пытаюсь проанализировать XML, получить ImageURL, а затем использовать его для извлечения изображения и сохранения его вместе со строками, такими как имя видео.

Мне просто не удается заставить его работать.Из отладчика я вижу, что в словаре есть пара ключ / значение для изображения, и изображение создается из URL, но я не могу добавить его в NSDictionary.Какие-либо предложения?Ниже приведен фрагмент кода, который занимается синтаксическим анализом.

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{   
    NSLog(@"found this element: %@", elementName);
 currentElement = [elementName copy];
 if ([elementName isEqualToString:@"clipid"]) {
  // clear out our story item caches...
  item = [[NSMutableDictionary alloc] init];
  currentClipID = [[NSMutableString alloc] init];
  currentClipName = [[NSMutableString alloc] init];
  currentImageURL = [[NSMutableString alloc] init];
  currentImage = [[UIImage alloc] init];
 }
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
 NSLog(@"found characters: %@", string);
 // save the characters for the current item...
 if ([currentElement isEqualToString:@"clipid"]) {
  [currentClipID appendString:string];
 } else if ([currentElement isEqualToString:@"clipname"]) {
  [currentClipName appendString:string];
 } else if ([currentElement isEqualToString:@"imageurl"]) {
  [currentImageURL appendString:string];
  //Take the Image URL, and convert it to an Image
  NSURL *imageURL = [NSURL URLWithString:string];
  NSData *data = [NSData dataWithContentsOfURL:imageURL];
  UIImage *image = [[UIImage alloc] initWithData:data];
  currentImage = //If it were a string I'd use appendString. How do I add this image to the Dictionary?
 }
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{     
 NSLog(@"ended element: %@", elementName);
 if ([elementName isEqualToString:@"clipid"]) {
  // save values to an item, then store that item into the array...
  [item setObject:currentClipID forKey:@"clipid"];
  [item setObject:currentClipName forKey:@"clipname"];
  [item setObject:currentImageURL forKey:@"imageurl"];
  [item setObject:currentImage forKey:@"image"];
  //videos is an NSMutableArray
  [videos addObject:[item copy]];
 }

}

1 Ответ

4 голосов
/ 22 октября 2010

Вам потребуется преобразовать объект UIImage в данные, которые можно сохранить в NSDictionary.

Попытка:

NSData *imageData = UIImagePNGRepresentation(image);

Затем добавьте imageData в словарь.

Кроме того, просто добавьте данные из вашего URL в NSDictionary.

...