0

我试图在我的 iPhone 应用程序中通过 JSON 解析图像 url。我的 json 模型是这样构建的:

{
   "picture":"link_to_image.jpg",
   "about":"about text here",
   "name":"Name"
}

我使用此代码来解析我的应用程序中的 itemw:

- (void)fetchedData:(NSData *)responseData
{
    NSError *error;
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData
                                                         options:kNilOptions error:&error];

    self.titleLabel.text = [json objectForKey:@"name"];
    self.aboutText.text = [json objectForKey:@"about"];
    self.profileImage.image = [json objectForKey:@"picture"];
}

在 ViewDidLoad 我写了这个:

dispatch_queue_t queue = dispatch_get_global_queue
    (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
       dispatch_async(queue,  ^{
        NSData *data = [NSData dataWithContentsOfURL:
                        [NSURL URLWithString:@"link_to_my_json_file.php"]];
        [self performSelectorOnMainThread:@selector(fetchedData:)
                               withObject:data waitUntilDone:YES];
    });

我已将插座连接到我的 .xib 文件中的项目,并且标题和关于文本已成功解析为标签和文本视图。但是图像不会解析。当我为图像尝试此应用程序时,该应用程序不断崩溃。

有人可以解释我做错了什么吗?

谢谢!

4

1 回答 1

1

正如@Hot Licks 在评论中提到的那样,您将 NSString 指针放入 UIImage 属性中。以下方法应该有效。

- (void)fetchedData:(NSData *)responseData
{
    NSError *error;
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData
                                                         options:kNilOptions error:&error];
    self.titleLabel.text = [json objectForKey:@"name"];
    self.aboutText.text = [json objectForKey:@"about"];
    NSURL *URL = [NSURL URLWithString: [json objectForKey:@"picture"]];
    dispatch_queue_t queue = dispatch_get_global_queue
    (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
       dispatch_async(queue,  ^{
        NSData *data = [NSData dataWithContentsOfURL: URL];
        self.profileImage.image = [UIImage imageWithData: data];
    });
}
于 2013-10-02T20:04:42.703 回答