我正在使用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/