CRToast icon indicating copy to clipboard operation
CRToast copied to clipboard

Swift 3 Unable to set dictionary properly

Open Jayvd opened this issue 8 years ago • 3 comments

    options.updateValue(CRToastType.navigationBar.rawValue as NSObject, forKey: kCRToastNotificationTypeKey as NSObject);

    CRToastManager.showNotification(options: options, completionBlock: nil);

Even after setting kCRToastNotificationTypeKey to navigationbar, it still only cover the status bar.

This problem does not exists in Swift 2.2

Jayvd avatar Sep 22 '16 05:09 Jayvd

Faced with the same issue.

Samback avatar Sep 30 '16 10:09 Samback

For this moment I have found that this problem is hidden here.

- (void)setOptions:(NSDictionary *)options {
    NSMutableDictionary *cleanOptions = [options mutableCopy];
    [options enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        //Check keys validity followed by checking objects type validity
        if ([kCRToastKeyClassMap.allKeys indexOfObject:key] == NSNotFound) {
            NSLog(@"[CRToast] : ERROR given unrecognized key %@ in options with object %@",
                  key,
                  obj);
            [cleanOptions removeObjectForKey:key];
        } else if (![obj isKindOfClass:NSClassFromString(kCRToastKeyClassMap[key])]) {
            NSLog(@"[CRToast] : ERROR given %@ for key %@ was expecting Class %@ but got Class %@, passing default on instead",
                  obj,
                  key,
                  kCRToastKeyClassMap[key],
                  NSStringFromClass([obj class]));
            [cleanOptions removeObjectForKey:key];
        }
    }];

Clear keys

![obj isKindOfClass:NSClassFromString(kCRToastKeyClassMap[key])

Samback avatar Sep 30 '16 12:09 Samback

Here is a solution that helped me

NSNumber(value: CRToastType.navigationBar.rawValue)

cause at enumeration we have a comparing with class.

If you have more than gust one key next dictionary should help you.

    kCRToastActivityIndicatorViewStyleKey = "__NSCFNumber";
    kCRToastAnimateInTimeInterval = "__NSCFNumber";
    kCRToastAnimateOutTimeInterval = "__NSCFNumber";
    kCRToastAnimateSpringVelocityKey = "__NSCFNumber";
    kCRToastAnimationGravityMagnitudeKey = "__NSCFNumber";
    kCRToastAnimationInDirectionKey = "__NSCFNumber";
    kCRToastAnimationInTypeKey = "__NSCFNumber";
    kCRToastAnimationOutDirectionKey = "__NSCFNumber";
    kCRToastAnimationOutTypeKey = "__NSCFNumber";
    kCRToastAnimationSpringDampingKey = "__NSCFNumber";
    kCRToastAutorotateKey = "__NSCFBoolean";
    kCRToastBackgroundColorKey = UIColor;
    kCRToastBackgroundViewKey = UIView;
    kCRToastCaptureDefaultWindowKey = "__NSCFBoolean";
    kCRToastFontKey = UIFont;
    kCRToastForceUserInteractionKey = "__NSCFBoolean";
    kCRToastIdentifierKey = NSString;
    kCRToastImageAlignmentKey = "__NSCFNumber";
    kCRToastImageContentModeKey = "__NSCFNumber";
    kCRToastImageKey = UIImage;
    kCRToastImageTintKey = UIColor;
    kCRToastInteractionRespondersKey = NSArray;
    kCRToastKeepNavigationBarBorderKey = "__NSCFBoolean";
    kCRToastNotificationPreferredHeightKey = "__NSCFNumber";
    kCRToastNotificationPreferredPaddingKey = "__NSCFNumber";
    kCRToastNotificationPresentationTypeKey = "__NSCFNumber";
    kCRToastNotificationTypeKey = "__NSCFNumber";
    kCRToastShowActivityIndicatorKey = "__NSCFBoolean";
    kCRToastStatusBarStyleKey = "__NSCFNumber";
    kCRToastSubtitleFontKey = UIFont;
    kCRToastSubtitleTextAlignmentKey = "__NSCFNumber";
    kCRToastSubtitleTextColorKey = UIColor;
    kCRToastSubtitleTextKey = NSString;
    kCRToastSubtitleTextMaxNumberOfLinesKey = "__NSCFNumber";
    kCRToastSubtitleTextShadowColorKey = UIColor;
    kCRToastSubtitleTextShadowOffsetKey = NSConcreteValue;
    kCRToastTextAlignmentKey = "__NSCFNumber";
    kCRToastTextColorKey = UIColor;
    kCRToastTextKey = NSString;
    kCRToastTextMaxNumberOfLinesKey = "__NSCFNumber";
    kCRToastTextShadowColorKey = UIColor;
    kCRToastTextShadowOffsetKey = NSConcreteValue;
    kCRToastTimeIntervalKey = "__NSCFNumber";
    kCRToastUnderStatusBarKey = "__NSCFBoolean";

Samback avatar Sep 30 '16 12:09 Samback