无法指定'myRepositoryViewController'类型的值来键入'myRepositoryViewController!'

时间:2017-08-03 19:41:16

标签: objective-c swift

我正在使用xcode9 beta4从目标C转换为Swift,我正在将MyRepositoryViewController的工作代码重写为MyRepositoryViewController.swift

在Objective C中的MyListViewController.h类中

@interface MyListViewController : UITableViewController <UIAlertViewDelegate, UITextFieldDelegate>

@property (nonatomic, strong) MyRepositoryViewController *myRepositoryController;

在MyRepositoryViewController类中,用Swift 3.0或4.0编写

class MyRepositoryViewController: UIViewController{
    @IBOutlet var infoOverlayView: InfoOverlayView!
.....

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)

    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
....
 func openInfoOverlay() {
        if self.infoOverlayView == nil {
            Bundle.main.loadNibNamed("InfoOverlayView", owner: self, options: nil)
            self.infoOverlayView.target? = self
        }

    }

我收到了错误

  

无法指定类型'MyRepositoryViewController'的值来键入   'MyRepositoryViewController!

 self.infoOverlayView.target? = self

在MyRepositoryViewController.m中它可以正常工作:

- (void)openInfoOverlay
{
    if (self.infoOverlayView == nil)
    {
        [[NSBundle mainBundle] loadNibNamed:@"InfoOverlayView" owner:self options:nil];
        self.infoOverlayView.target = self;
    }

}

我是SWIFT编程的新手,并且在这几天里一直在努力解决这个问题。任何帮助都非常感谢。这是我第一次询问SO。

1 个答案:

答案 0 :(得分:0)

问凯文提到了吗?是不必要的,我把它放进去看它是否解决了问题。感谢您的帮助。

当我转到Bridging-Header并删除MyRepositoryViewController.h时,可以编译项目。