我正在尝试将我的项目迁移到 Swift,并从制作一个 Objective-C Bridger 文件开始,其中包含相关 .h 文件的 #imports。我已经详尽地检查了构建设置选项和路径是否正确。我为UITableViewController创建了一个Swift文件,如下所示:
表视图控制器.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")
}
...
}
但是,从第一个覆盖开始的每一行都会导致错误,例如
初始值设定项不会从其超类重写指定的初始值设定项
和
不能在根类中引用"超级"成员
我对使用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
我没有意识到我需要将类型添加到类定义中
class TableViewController : UITableViewController, TableViewControllerDelegate {
这就是你盲目信任 objectivec2swift.com :P
我还将 .h 文件中概述的变量和协议添加到 Swift 文件中。