我正在使用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。
答案 0 :(得分:0)
当我转到Bridging-Header并删除MyRepositoryViewController.h时,可以编译项目。