将图像从JSON存储到自定义类iOS

时间:2013-03-20 08:25:49

标签: ios json uiimage

我正在构建一个RSS阅读器应用程序,遵循教程,什么不是。

到目前为止,我已经构建了一个名为blogPost的自定义类,它存储帖子名称和帖子后作者,并使用基于名称的指定初始化程序。

我正在尝试在for循环中拉出帖子的缩略图,并将其显示在我当前显示标题和作者属性的单元格中。

我成功提取了图片网址,并从JSON解析,但似乎无法将图片存储在UIImage中。

//Custom header for BlogPost

@interface BlogPost : NSObject
@property (nonatomic, strong) NSString *title;
@property (nonatomic, strong) NSString *author;
@property (nonatomic, strong) UIImage *image;

// Designated Initializer
- (id) initWithTitle:(NSString *)title;

+ (id) blogPostWithTitle:(NSString *)tile;
@end

这是tableViewController

[super viewDidLoad];

NSURL *blogUrl = [NSURL URLWithString:@"http://www.wheninmanila.com/api/get_recent_summary/"];
NSData *jsonData = [NSData dataWithContentsOfURL:blogUrl];
NSError *error = nil;

NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];

self.blogPosts = [NSMutableArray array];

NSArray *blogPostsArray = [dataDictionary objectForKey:@"posts"];

for (NSDictionary *bpDictionary in blogPostsArray) {
    BlogPost *blogPost = [BlogPost blogPostWithTitle:[bpDictionary objectForKey:@"title"]];
    blogPost.author = [bpDictionary objectForKey:@"author"];

    NSURL *thumbURL = [bpDictionary objectForKey:@"thumbnail"];
    NSData *thumbData = [NSData dataWithContentsOfURL:thumbURL];

    blogPost.image = [[UIImage alloc] initWithData:thumbData];


    [self.blogPosts addObject:blogPost];
}

2 个答案:

答案 0 :(得分:4)

更改此行:

NSURL *thumbURL = [bpDictionary objectForKey:@"thumbnail"];

对此:

NSURL *thumbURL = [NSURL urlWithString:[bpDictionary objectForKey:@"thumbnail"]];

词典中的值为NSStrings,与NSURL的值不同。

答案 1 :(得分:3)

您使用的是NSURL而不是NSStringNSString没有响应选择器isFileURL(这就是您获得例外的原因)。我假设您的缩略图是一个字符串,因此您应该将其设为NSString,然后将其转换为NSURL,如下所示:

NSString *thumbAsString = [bpDictionary objectForKey:@"thumbnail"];
NSURL *thumbURL = [NSURL URLWithString:thumbAsString];