Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS中解析JSON图像URL时出错_Ios_Json_Xcode_Uitableview - Fatal编程技术网

在iOS中解析JSON图像URL时出错

在iOS中解析JSON图像URL时出错,ios,json,xcode,uitableview,Ios,Json,Xcode,Uitableview,我试图解析一个JSON文件,其中包含一些图像链接、一些标题和时间 这是我的代码: #import "PicturesViewController.h" #import "DemoViewController.h" #import "SecondViewController.h" #import "AppDelegate.h" #import "RNBlurModalView.h" #import "PictureJSON.h" #import "HMSegmentedControl.h" @i

我试图解析一个JSON文件,其中包含一些图像链接、一些标题和时间

这是我的代码:

#import "PicturesViewController.h"
#import "DemoViewController.h"
#import "SecondViewController.h"
#import "AppDelegate.h"
#import "RNBlurModalView.h"
#import "PictureJSON.h"
#import "HMSegmentedControl.h"

@interface PicturesViewController ()
{
    NSInteger refreshIndex;
    NSArray *images;
}

@end

@implementation PicturesViewController

- (void)viewDidLoad
{

    HMSegmentedControl *segmentedControl = [[HMSegmentedControl alloc] initWithSectionTitles:@[@"Instagram", @"Hashtags", @"Facebook"]];
    [segmentedControl setFrame:CGRectMake(10, 10, 300, 60)];
    [segmentedControl addTarget:self action:@selector(segmentedControlChangedValue:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:segmentedControl];

    [super viewDidLoad];
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Menu" style:UIBarButtonItemStyleBordered target:self action:@selector(showMenu)];

    UIPanGestureRecognizer *gestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(swipeHandler:)];
    [self.view addGestureRecognizer:gestureRecognizer];

    [self issueLoadRequest];
}

- (void)swipeHandler:(UIPanGestureRecognizer *)sender
{
    [[self sideMenu] showFromPanGesture:sender];
}

- (void)segmentedControlChangedValue:(HMSegmentedControl *)segmentedControl1 {
    [self issueLoadRequest];
}

- (void)segmentedControlSelectedIndexChanged:(id)sender
{
    [self issueLoadRequest];
}

#pragma mark -
#pragma mark Button actions

- (void)showMenu
{
    [[self sideMenu] show];
}

#pragma mark - Table view data source


- (void)issueLoadRequest
{
    // Dispatch this block asynchronosly. The block gets JSON data from the specified URL and performs the proper selector when done.
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://my-site/pictureparse.php?name=Name"]];
        [self performSelectorOnMainThread:@selector(receiveData:) withObject:data waitUntilDone:YES];
    });
}

- (void)receiveData:(NSData *)data {
    // When we have the data, we serialize it into native cocoa objects. (The outermost element from twitter is
    // going to be an array. I JUST KNOW THIS. Reload the tableview once we have the data.
    self.tweets = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
    [self.myTableView reloadData];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.tweets.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"PictureJSON";

    PictureJSON *cell = (PictureJSON *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PictureJSON" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

    // The element in the array is going to be a dictionary. I JUST KNOW THIS. The key for the tweet is "text".
    NSDictionary *tweet = [self.tweets objectAtIndex:indexPath.row];
    NSLog(@"%@", [cell class]);
    cell.instaImage = [tweet objectForKey:@"link"];
    cell.titleLabel.text = [tweet objectForKey:@"title"];
    cell.timeLabel.text = [tweet objectForKey:@"published"];

    return cell;
}
但当我启动我的应用程序时,会出现以下错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<PicturesViewController 0x758bf70> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key instaImage.'

我做错了什么?

首先试着调试一下。从崩溃日志来看,我认为你在自定义单元格上做错了。首先检查图片的连接。并检查您的文件所有者,它应该是您的自定义单元格。您可以使用断点来确认这一点。如果在创建单元格时出现错误,则以上是解决方案。

首先尝试调试此问题。从崩溃日志来看,我认为你在自定义单元格上做错了。首先检查图片的连接。并检查您的文件所有者,它应该是您的自定义单元格。您可以使用断点来确认这一点。如果在创建单元格时出现错误,则以上是解决方案。

首先尝试调试此问题。从崩溃日志来看,我认为你在自定义单元格上做错了。首先检查图片的连接。并检查您的文件所有者,它应该是您的自定义单元格。您可以使用断点来确认这一点。如果在创建单元格时出现错误,则以上是解决方案。

首先尝试调试此问题。从崩溃日志来看,我认为你在自定义单元格上做错了。首先检查图片的连接。并检查您的文件所有者,它应该是您的自定义单元格。您可以使用断点来确认这一点。如果在创建单元格时出现错误,那么以上就是解决方案。

我认为问题不在于JSON序列化,从日志中可以看出,此崩溃是由于您的
静态NSString*simpleTableIdentifier=@“PictureJSON”


请确保已将此标识符分配给自定义单元格

我认为问题不在于JSON序列化,从您的日志来看,这次崩溃是因为您的
静态NSString*simpleTableIdentifier=@“PictureJSON”


请确保已将此标识符分配给自定义单元格

我认为问题不在于JSON序列化,从您的日志来看,这次崩溃是因为您的
静态NSString*simpleTableIdentifier=@“PictureJSON”


请确保已将此标识符分配给自定义单元格

我认为问题不在于JSON序列化,从您的日志来看,这次崩溃是因为您的
静态NSString*simpleTableIdentifier=@“PictureJSON”



请确保已将此标识符分配给自定义单元格

我想你得检查一下酒店的图片。我认为您正在访问尚未在nib中定义的属性。

我认为您必须检查属性instaImage。我认为您正在访问尚未在nib中定义的属性。

我认为您必须检查属性instaImage。我认为您正在访问尚未在nib中定义的属性。

我认为您必须检查属性instaImage。我认为您正在访问尚未在nib中定义的属性。

这不是问题,您可以使用任何字符串作为标识符。他使用的是[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier],如果没有任何具有此标识符的单元格,它将崩溃这不是问题,您可以使用任何字符串作为标识符。他正在使用[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier],如果没有任何具有此标识符的单元格,它将崩溃这不是问题,您可以使用任何字符串作为标识符。他正在使用[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier],如果没有任何具有此标识符的单元格,它将崩溃这不是问题,您可以使用任何字符串作为标识符。他正在使用[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier],如果没有任何具有此标识符的单元格,它将崩溃为什么投票?至少要努力说明原因。为什么要否决投票?至少要努力说明原因。为什么要否决投票?至少要努力说明原因。为什么要否决投票?至少要努力指定原因。如果单元格不是单元格,则单元格的其他两个属性也应引发异常。如果单元格不是单元格,则单元格的其他两个属性也应引发异常。如果单元格不是单元格,则单元格的其他两个属性也应引发异常。如果单元格不是单元格,则其他两个属性也应引发异常单元格的属性也应引发异常。
[
    {
        "link": "http://link.com/picture.jpg",
        "title": "title",
        "published": "0:12 PM 21/10"
    },
    {
        "link": "http://link.com/picture.jpg",
        "title": "title",
        "published": "0:09 AM 21/10"
    }
]