От CRToast я хочу написать в Swift (Это из CRToast example):NSDictionary представительство в Swift
NSDictionary *options = @{
kCRToastTextKey : @"Hello World!",
kCRToastTextAlignmentKey : @(NSTextAlignmentCenter),
kCRToastBackgroundColorKey : [UIColor redColor],
kCRToastAnimationInTypeKey : @(CRToastAnimationTypeGravity),
kCRToastAnimationOutTypeKey : @(CRToastAnimationTypeGravity),
kCRToastAnimationInDirectionKey : @(CRToastAnimationDirectionLeft),
kCRToastAnimationOutDirectionKey : @(CRToastAnimationDirectionRight)
};
[CRToastManager showNotificationWithOptions:options
completionBlock:^{
NSLog(@"Completed");
}];
Вот мой Свифт представление первых строк:
var options:[NSObject:AnyObject] = [:]
options[kCRToastTextKey] = "Hello World !"
options[kCRToastTextAlignmentKey] = "\(NSTextAlignment.Center)"
options[kCRToastBackgroundColorKey] = UIColor.redColor()
CRToastManager.showNotificationWithOptions(options, completionBlock: {() -> Void in
println("done!")
})
Когда я компилирую и запускаю код, я получил следующую ошибку:
[CRToast] : ERROR given (Enum Value) for key kCRToastTextAlignmentKey was expecting Class __NSCFNumber but got Class Swift._NSContiguousString, passing default on instead
Каков правильный перевод NSDictionary, представленный выше в Swift?
Прежде всего, вам не нужны эти отдельные назначения. Вы также можете использовать литерал словаря в Swift. Теперь фактическая ошибка заключается в том, что API, по-видимому, ожидает «NSNumber» от значения, соответствующего ключу выравнивания текста, но вместо этого вы передаете ему строку. –
@ TheParamagneticCroissant Когда вы посмотрите на пример здесь: https://github.com/cruffenach/CRToast#example, вы видите, что я так работаю в ObjectiveC. – confile
um, о чем вы говорите? в этом примере нигде нет кода Swift ... и код Objective-C проходит в 'NSNumber', а также ваш код Swift. –