cruffenach / CRToast

A modern iOS toast view that can fit your notification needs
MIT License
4.17k stars 463 forks source link

kCRToastTimeIntervalKey issue with Xcode 8.1 swift 3 #213

Open rogomantik opened 7 years ago

rogomantik commented 7 years ago

I have this error in the log [CRToast] : ERROR given 0.4 for key kCRToastTimeIntervalKey was expecting Class __NSCFNumber but got Class _SwiftTypePreservingNSNumber, passing default on instead

rogomantik commented 7 years ago

also ERROR given 1 for key kCRToastTextAlignmentKey was expecting Class __NSCFNumber but got Class _SwiftTypePreservingNSNumber, passing default on instead

fixed by setting

kCRToastTimeIntervalKey                 : NSNumber(value: 0.4),
kCRToastTextAlignmentKey                : NSNumber(value: NSTextAlignment.center.rawValue),

but when appear the notification the whole ui flashes

wsb9 commented 7 years ago

Noticed same error in log, but proposed fix was not worked for me.

Actually, problem exists because ObjC and Swift internally use different private subclasses of NSNumber class cluster. Proper solution would be opening CRToastConfig.m and changing kCRToastKeyClassMap initialization: instead of extracting classes from default values, which are actually private subclasses of NSNumber, use NSNumber itself. This way, class comparison is done in right way and these warnings disappear.

Art-Cube commented 7 years ago

Fixed for me by altering the line as such:

    } else if (![obj isKindOfClass:NSClassFromString(kCRToastKeyClassMap[key])] && ![NSStringFromClass([obj class]) containsString:@"Number"]) {
mohammadshalhoob commented 6 years ago

i fix it like this :

    let options = [kCRToastTextKey:"Hello World!",kCRToastTextAlignmentKey:NSNumber(value: NSTextAlignment.center.rawValue),kCRToastBackgroundColorKey:UIColor.black,kCRToastAnimationInTypeKey:NSNumber(value:CRToastAnimationType.gravity.rawValue),kCRToastAnimationOutTypeKey:NSNumber(value:CRToastAnimationType.gravity.rawValue),kCRToastAnimationInDirectionKey:NSNumber(value:CRToastAnimationDirection.left.rawValue),kCRToastAnimationOutDirectionKey:NSNumber(value:CRToastAnimationDirection.right.rawValue),kCRToastTimeIntervalKey:NSNumber(value:10.0)] as [String : Any]