typedef NS_ENUM: передача NSDictionary пользовательских свойств в метод

Я создал такой макрос и определение:

#define CustomImageOptions NSDictionary
typedef NS_ENUM(NSInteger, CustomImageOption) {
    CustomImageOptionResize, // CGSize
    CustomImageOptionQuality, // CGFloat
    CustomImageOptionType // NSString (JPEG or PNG)
};

У меня есть такой метод:

- (UIImage*)imageModifiedWithOptions:(CustomImageOptions*)options;

где я хотел бы передать словарь опций так (псевдокод):

[self imageModifiedWithOptions:@{CustomImageOptionResize: CGSizeMake(10, 20), CustomImageQuality: 0.9}];

Он не будет компилироваться, предположительно, потому что мой макрос имеет тип NSInteger, который не перечисляется в качестве ключа для NSDictionary.

Как я могу реализовать это, чтобы я мог передать NSDictionary опций моему методу?

1 ответ

Решение

Сделай это так:

[self imageModifiedWithOptions:@{@(CustomImageOptionResize): CGSizeMake(10, 20), @(CustomImageQuality): 0.9}];

Они должны быть преобразованы в NSNumberсначала.

Другие вопросы по тегам