我使用Swift从objective-c类(JSONModel)调用初始化程序
该类包含一些初始值设定项:
-(instancetype)initWithString:(NSString*)string error:(JSONModelError**)err;
-(instancetype)initWithString:(NSString *)string usingEncoding:(NSStringEncoding)encoding error:(JSONModelError**)err;
-(instancetype)initWithDictionary:(NSDictionary*)dict error:(NSError **)err;
-(instancetype)initWithData:(NSData *)data error:(NSError **)error;
由于我想调用initWithDictionary,我编写了像
这样的代码var error:NSError
var loginRes = RegisterResponse(dictionary: dict , error: &error
)
其中,RegisterResponse是JSONModel的子类,dict是一个预先使用的Dictionary变量
然而,编者抱怨说: 在调用中缺少参数“usingEncoding”的参数。
似乎编译器认为我正在调用
-(instancetype)initWithString:(NSString *)string usingEncoding:(NSStringEncoding)encoding error:(JSONModelError**)err;
而不是第三个。有没有解决方案?
答案 0 :(得分:2)
-(instancetype)initWithDictionary:(NSDictionary*)dict error:(NSError **)err;
映射到Swift为
init!(dictionary dict: [NSObject : AnyObject]!, error err: NSErrorPointer)
如Adopting Cocoa Design Patterns / Error Reporting中所述,
您必须将可选 NSError
作为输入输出表达式传递:
var error : NSError?
let loginRes = RegisterResponse(dictionary: dict, error: &error)
或错误检查:
var error : NSError?
if let loginRes = RegisterResponse(dictionary: dict, error: &error) {
println("success")
} else {
println(error!.localizedDescription)
}