错误告诉我尝试制作 NSDictionary 时我的 textview 为 nil

Error tells me that my textview is nil when trying to make NSDictionary

我要在我的应用程序中设置一些限制条件。当我尝试创建一个 NSDictionary 时,我得到一个错误,告诉我我的 UITextView 是零。如您所见,我已经为 UITextView 设置了一些首选项,所以我认为它不是零。但是,如果它是零,我如何让它不为零?

我也尝试过 NSDictionaryOfVariableBindings,但没有成功。

谢谢。

    UIView *infoView = [[UIView alloc] viewWithTag:1];
    infoView.backgroundColor = [UIColor blackColor];
    infoView.translatesAutoresizingMaskIntoConstraints = NO;
    [displayView addSubview:infoView];

    NSDictionary *views = @{@"infoView" : infoView};

    [displayView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[infoView]|"
                                                                    options:0
                                                                    metrics:nil
                                                                    views:views]];
    [displayView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[infoView]|"
                                                                    options:0
                                                                    metrics:nil
                                                                    views:views]];

您犯的错误是 viewWithTag: 没有实例化新的 UIView,它只是在现有 UIView 的层次结构中搜索另一个将其作为其标记值的 UIView。更多文档:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/instm/UIView/viewWithTag:

您需要做的是先实例化您的 UIView,然后设置它的标签:

UIView *infoView = [[UIView alloc] init];
infoView.tag = 1;

还有一点,虽然令人惊讶,但在 objective-c 中为 nil 设置属性(和调用方法或发送消息)是完全有效的,您不能相信它测试该对象不是零。更多讨论在这里:Sending a message to nil?