我已经看到了很多关于此的问题和答案,但它们似乎都没有涵盖或解决我的情况。
我有一个最初用Objc编写的项目,现在,一个接一个,我用Swift 4语法替换所有类。
我的问题是,我无法访问Objective C文件中的swift属性。
这是我到目前为止所做的:
我有一个名为MessagesViewController.swift的swift文件,其启动方式如下:
@objc class MessagesViewController: UIViewController, UITableViewDataSource, UITableViewDelegate{
@objc var mailboxNumber:NSNumber = 0
...
然后,有一个objc类“MessagesBoxController”需要访问prepareForSegue方法中的 mailboxNumber :
因此,在MessagesBoxController.h中我导入生成的接口头:
#import "myProduct-Swift.h"
并在MessagesBoxController.m中我有这个样板方法:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
MessagesViewController *destViewController = segue.destinationViewController;
NSIndexPath *selectedIndexPath = [_tv indexPathForSelectedRow];
destViewController.mailboxNumber =selectedIndexPath.row+1;
}
因此,Swift类“MessagesViewController”被认可很好;没有编译器的任何投诉。虽然它的属性没有暴露:
自动完成不建议 mailboxNumber ,在构建项目时,我收到错误
在类型对象上找不到“属性'mailboxNumber' 'MessagesViewController *'“
缺少哪些部分才能使这项工作?
答案 0 :(得分:1)
行, 所以,基本设置是正确的。 我最终清理了这个项目。然后我收到消息“myProduct-Swift.h”找不到。 然后我退出XCode并删除了派生数据。这有帮助。