从viewdidload调用块

时间:2013-09-16 10:12:03

标签: ios json objective-c-blocks

我正在尝试从我的模型中加载一些JSON数据。 但我想使用一个块,所以我可以检查是否有完整是或否的数据。 但是我从我的viewdidload调用我的块设置了一个断点来检查它是否被调用并且它来自块,而不是跳过块之间的所有内容。

BlaVIewController.m

#import "MKDataSource.h"

@interface BlaViewController ()

@property (strong, nonatomic) MKDataSource *dataSource;
@property (strong, nonatomic) IBOutlet UITableView *tableView;

@end

@implementation BlaViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.dataSource = [[MKDataSource alloc] init];
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.dataSource loadData:^(BOOL complete, NSError *error) {
        if (complete) {
             //[self.tableView reloadData];
            NSLog(@"There is data");
        } else {
            // error
            NSLog(@"No data found");
        }
    }];

    // Do any additional setup after loading the view.
}

我的MKDataSource.m

@interface MKDataSource ()
@property (strong, nonatomic) NSDictionary *data;
@end
@implementation MKDataSource
- (void)loadData:(bool_complete)complete {
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]];
    NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    self.data = [NSJSONSerialization JSONObjectWithData:response options:0 error:nil];
    NSLog(@"JSON Data %@", self.data);

    complete(YES, nil);
}

请解释我做错了什么。我检查JSON,它的工作原理。 (我删除了JSON网址并将其替换为google.com。保护我的数据)

1 个答案:

答案 0 :(得分:0)

self.dataSource = [[MKDataSource alloc] init];从initwithnibname移至viewdidload。

WORKS