[英]UIImage Not being Set from NSData
目標是通過Web服務提取作為varbinary存儲在sql服務器中的圖像,該Web服務將sqlbinary作為JSON發送到iphone。 我在從JSON發送的base64binary中設置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);
假設包含以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
類別,以使其使用非常方便。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.