簡體   English   中英

未從NSData設置UIImage

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM