myRepositoryViewController

myRepositoryViewController

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

在目标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。

最佳答案

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

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

关于objective-c - 无法将类型“myRepositoryViewController”的值分配给类型“myRepositoryViewController!”。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45493226/

10-09 15:34