2014-11-11 4 views
1

Я использовать Swift вызвать инициализатор из Objective-C класса (JSONModel)Swift - Вызов инициализатора, отсутствует аргумент

Класс содержит некоторые инициализатору:

-(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 является предварительно используемой переменной словаря

Однако, компилятор жалуется, как: Отсутствует аргумент для параметра «usingEncoding» при вызове.

Кажется, что компилятор думает, что я звоню

-(instancetype)initWithString:(NSString *)string usingEncoding:(NSStringEncoding)encoding error:(JSONModelError**)err; 

, а не третья. Есть ли решение?

+0

Попробуйте 'var error: NSError?' –

+0

Удалил мой ответ, хотя вы использовали первый инициализатор. @ Комментарий MartinR должно быть решением – Antonio

ответ

2
-(instancetype)initWithDictionary:(NSDictionary*)dict error:(NSError **)err; 

отображается Свифта, как

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) 
} 
+0

приятное решение ... thx – Exia

Смежные вопросы