我有通过标准化初始化程序名称来简化对象初始化的协议。以下是Objective-C
中的样子@protocol CSModelInitialization <NSObject>
@required
+ (id)modelWithParameters:(NSDictionary *)parameters;
@optional
- (instancetype)initWithParameters:(NSDictionary *)parameters;
@end
现在我已经创建了Swift类,我们称之为TestClass
,它将实现此协议。在Objective-C实现中看起来像这样:
+ (instancetype)modelWithParameters:(NSDictionary *)parameters {
SomeClass *object = [[self alloc] init];
//Setting some properties from parameters NSDictionary...
return object;
}
现在当我尝试在Swift中使用类似的方法时,我遇到了错误,比如
类型'TestClass'不符合协议'MyProtocol'
或`
'TestClass'不能转换为'Self'
Swift实现如下:
import UIKit
public class TestClass: NSObject, MyProtocol {
//MARK: MyProtocol
public class func modelWithParameters(parameters: [NSObject : AnyObject]!) -> Self? {
var object: TestClass = TestClass()
//Setting some properties from parameters dictionary...
return object
}
}
我对Swift相对较新,链接到一些例子真的很棒。