3

チュートリアルなどに従って、RSSリーダーアプリを構築しています。

これまでのところ、名前に基づいて指定された初期化子を使用して、投稿名と投稿者を格納する blogPost という名前のカスタム クラスを作成しました。

forループで投稿のサムネイル画像を取得し、現在タイトルと作成者の属性を表示しているセルに表示しようとしています。

画像の URL を正常にプルして 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];
}
4

2 に答える 2

4

この行を変更します。

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

これに:

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

辞書の値は になりますがNSStrings、これは と同じではありませんNSURL

于 2013-03-20T08:38:17.110 に答える
3

NSURLa の代わりに使用していて、セレクターに応答しませんNSString(そのため、例外が発生します)。サムネイルは文字列であると想定しているため、次のように変換するよりも取得する必要があります。NSStringisFileURLNSStringNSURL

NSString *thumbAsString = [bpDictionary objectForKey:@"thumbnail"];
NSURL *thumbURL = [NSURL URLWithString:thumbAsString];
于 2013-03-20T08:41:50.363 に答える