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
сначала.