为啥数据给我null?

Posted

技术标签:

【中文标题】为啥数据给我null?【英文标题】:Why does data give me null?为什么数据给我null? 【发布时间】:2016-01-24 18:05:37 【问题描述】:

我正在尝试将NSDictionaryTableViewController传递给ViewController。在我的TableViewController.m。我有这段代码可以导航到ViewController:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    NSDictionary *objectDict = [dataArray objectAtIndex:indexPath.row];
    NSLog(@"Info: %@", objectDict);
    // Pass object to new page
    //UIViewController * vc = [[UIViewController alloc] init];
    //[self presentViewController:vc animated:YES completion:nil];

    SeeInfoVC *controller = [[SeeInfoVC alloc] init];
    controller.data = objectDict;

    NSString * storyboardName = @"Main";
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
    UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"SeeInfoVC"];
    [self presentViewController:vc animated:YES completion:nil];

在我的ViewController.h 我有:

@interface SeeCardVC : UIViewController

    NSDictionary *data;

@property (nonatomic, retain)NSDictionary *data;


@end

然后我尝试将data 登录到ViewController.m

@implementation SeeCardVC
@synthesize data;

- (void)viewDidLoad 
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    NSLog(@"Info: %@", data);


但它只给我 null :( 我究竟做错了什么?

【问题讨论】:

【参考方案1】:

让我们看看你的代码在这里做了什么:

// Create new controller, assign objectDict to data property
SeeInfoVC *controller = [[SeeInfoVC alloc] init];
controller.data = objectDict;

//Get Storyboard name
NSString * storyboardName = @"Main";
//Get Storyboard (BTW, you can do this with self.storyboard)
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
//Instantiate NEW controller
UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"SeeInfoVC"];
//Present NEW controller
[self presentViewController:vc animated:YES completion:nil];

您创建了一个控制器并为其分配了数据,然后不再使用它,而是从情节提要中创建了一个新控制器,您没有添加数据并呈现它。

基本上,您创建了两个,将数据设置为一个并呈现另一个。

看到问题了吗?

【讨论】:

是的,我可以看到!但是那我该怎么做呢?我有点困惑@EmilioPelaez 如果我删除 NSString、UIStoryboard 和 UIViewController,它会记录数据,但屏幕是黑色的 :) 很高兴您找到了答案。事实是我本可以说“将这些行换成其他行”,但如果可能的话,我喜欢鼓励人们学习,而不是一味地给他们答案,这样你可能不会带着同样的问题回来。

以上是关于为啥数据给我null?的主要内容,如果未能解决你的问题,请参考以下文章

为啥浏览器控制台日志给我错误“数据表不是函数”?

RegQueryValueEx 返回 ERROR_SUCCESS 但它没有给我数据缓冲区。为啥?

为啥 Oracle 的 DECODE 给我的价值与 NVL 不同?

为啥我的 PIVOT 查询使用不包含 NULL 的数据集产生 NULL 结果?

为啥 datataskwithurl 的数据对象正在接收 null?

为啥当我知道有足够的内存空间时 cudaMalloc 会给我一个错误?