Objective-C桥接标头不适用于Swift文件

时间:2017-06-09 13:19:49

标签: ios objective-c swift xcode

我正在尝试将我的项目迁移到Swift,并开始使用#imports填充Objective-C Bridger文件到相关的.h文件。我已经详尽地检查了Build Settings选项和路径是否正确。我为UITableViewController创建了一个Swift文件,如下所示:

TableViewController.swift

class TableViewController {
    var title: String = ""
    var summary: String = ""

    override init(style: UITableViewStyle) {
        super.init(style: style)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        title = UIResources.getString(settingsKey, withSuffix: "title")
        summary = UIResources.getString(settingKey, withSuffix: "summary")
    } 

    ...

}

但是,从第一个覆盖开始的每一行都会导致错误,如

  

初始化程序不会覆盖其超类

中的指定初始值设定项

  

'super'成员不能在根类中引用

我对使用Objective-C非常不熟悉,所以我不确定我需要改变什么,如果有的话。这是我在桥接头中导入的类的.h文件。我真的很难过这个。

TableViewController.h

#import <UIKit/UIKit.h>

@class TableViewController

@protocol TableViewControllerDelegate <NSObject>

- (void) tableViewControllerDidSave: (UIViewController *)controller forKey:(NSString *)key withNewValue:(id) value;

@end

@interface TableViewController : UITableViewController

@property (strong, nonatomic) id <TableViewControllerDelegate> delegate;
@property (strong, nonatomic) NSString *settingKey;
@property (strong, nonatomic) id stringValue;

@end

1 个答案:

答案 0 :(得分:0)

我没有意识到我需要将类型添加到类定义

class TableViewController : UITableViewController, TableViewControllerDelegate {

这是你盲目信任时所得到的objectivec2swift.com:P

我还将.h文件中列出的变量和协议添加到Swift文件中。