在Swift中实现关于instancetype关键字的协议

时间:2015-03-17 13:16:59

标签: ios objective-c swift

我有通过标准化初始化程序名称来简化对象初始化的协议。以下是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相对较新,链接到一些例子真的很棒。

0 个答案:

没有答案