2013-08-05 3 views
0

Цель состоит в том, чтобы вытащить изображение, сохраненное как varbinary в sql-сервере, через веб-службу, которая отправляет sqlbinary как JSON на iphone. У меня возникли проблемы с настройкой UIImage из base64binary, отправленного из JSON. Я могу преобразовать двоичный файл в NSData, но изображение не устанавливается через данные.UIImage Не устанавливается из NSData

for (int i = 0; i < array.count; i++) { 
      NSDictionary *mealInfo = [array objectAtIndex:i]; 
      Meal *meal =[[Meal alloc]initWithRestaurant:[mealInfo objectForKey:@"restaurantname"] 
               mealName:[mealInfo objectForKey:@"itemname"] 
              description:[mealInfo objectForKey:@"itemdescription"] 
                Time:[mealInfo objectForKey:@"mealTime"] 
                price:[mealInfo objectForKey:@"itemprice"]]; 
      //NSString *str = @"data:image/jpg;base64,"; 
      //str = [str stringByAppendingString:[mealInfo objectForKey:@"itemImage"]]; 
      //NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]]; 

      NSString *str = [mealInfo objectForKey:@"itemImage"]; 
      NSLog(@"%@", str); 

      NSData *d = [[NSData alloc]initWithData:[NSData dataFromBase64String:str]]; 
      UIImage *image = [UIImage imageWithData:d]; 
      [meal setMealImage:image]; 

         [meals addObject:meal]; 

     } 
     NSLog(@"%@",[[meals objectAtIndex:0]mealPrice]); 
     NSLog(@"This is how many meals %d", meals.count); 

ответ

0

Предполагая, что строка, содержащая кодировку base 64, хороша, ваш код выглядит нормально. Я бы посмотрел на метод dataFromBase64String, чтобы узнать, вызывает ли это проблему. Вот версия я использую основанный на работе некоторых еще в:

-(NSData *)dataFromBase64EncodedString:(NSString *)string{ 
    if (string.length > 0) { 

     //the iPhone has base 64 decoding built in but not obviously. The trick is to 
     //create a data url that's base 64 encoded and ask an NSData to load it. 
     NSString *data64URLString = [NSString stringWithFormat:@"data:;base64,%@", string]; 
     NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:data64URLString]]; 
     return data; 
    } 
    return nil; 
} 

Вы можете добавить NSData категории с этим методом, чтобы сделать его использование очень удобно.

Смежные вопросы