2016-05-22 4 views
-6

, пожалуйста, помогите, я новичок в swift, и я не могу «перевести» код с obj-c на быстрый. Некоторые литературы или любая помощь, пожалуйста. Или какая-то аналогия с INSTANCETYPE в быстройЦель - C -> Swift

@implementation Message 

+ (instancetype)messageWithString:(NSString *)message 
{ 
    return [Message messageWithString:message image:nil]; 
} 

+ (instancetype)messageWithString:(NSString *)message image:(UIImage *)image 
{ 
    return [[Message alloc] initWithString:message image:image]; 
} 

- (instancetype)initWithString:(NSString *)message 
{ 
    return [self initWithString:message image:nil]; 
} 

- (instancetype)initWithString:(NSString *)message image:(UIImage *)image 
{ 
    self = [super init]; 
    if(self) 
    { 
     _message = message; 
     _avatar = image; 
    } 
    return self; 

} 
@end 

Screen of code

ответ

0

Конвенции в Swift является не переводить фабричные методы (посмотреть, как Apple, переводить NSString).

Попробуйте это:

class Message: NameOfSuperClass { 
    var message: String 
    var image: UIImage? 

    init(message: String, image: UIImage? = nil) { 
     self.message = message 
     self.image = image 
     super.init() 
    } 
} 

Использование:

let a = Message(message: "Hello world") 
let b = Message(message: "Goodbye world", image: anImage) // Assume anImage is defined