CocoaPods trunk is moving to be read-only. Read more on the blog, there are 19 months to go.
TestsTested | ✓ |
LangLanguage | Obj-CObjective C |
License | MIT |
ReleasedLast Release | Jun 2016 |
Maintained by Arkadiusz Holko.
A macro and a set of functions introducing reflection for enumerations in Objective-C.
Features:
Once you have ReflectableEnum added to your project, you just need to replace existing enum definitions, like:
typedef NS_ENUM(NSUInteger, AccountType) {
AccountTypeStandard,
AccountTypeAdmin
};
with:
REFLECTABLE_ENUM(NSInteger, AccountType,
AccountTypeStandard,
AccountTypeAdmin
);
Now you can get a string representing an enumerator and all/minimum/maximum values of an enumeration the enumerator belongs to with:
AccountType accountType = AccountTypeStandard;
NSString *typeString = REFStringForMember(accountType); // @"AccountTypeStandard"
NSArray *allValues = REFAllValuesForEnumWithMember(accountType); // @[@0, @1]
NSInteger mininimum = REFMinForEnumWithMember(accountType); // 0
NSInteger maximum = REFMaxForEnumWithMember(accountType); // 1
In case you pass the enumerator directly to one of these functions, you have to cast it to AccountType
, because the compiler doesn't know its type (it's treated as NSInteger
in this case):
NSString *typeString = REFStringForMember((AccountType)AccountTypeStandard);
NSArray *allValues = REFAllValuesForEnumWithMember((AccountType)AccountTypeStandard);
NSInteger mininimum = REFMinForEnumWithMember((AccountType)AccountTypeStandard);
NSInteger maximum = REFMaxForEnumWithMember((AccountType)AccountTypeStandard);
The need to cast is a hassle, so ReflectableEnum
will create enum-specific functions for you too:
NSString *typeString = REFStringForMemberInAccountType(AccountTypeStandard);
NSArray *allValues = REFAllValuesInAccountType();
NSInteger mininimum = REFMinInAccountType();
NSInteger maximum = REFMaxInAccountType();
As you can see names of these functions depend on the name of the enumeration and follow these patterns: REFStringForMemberIn\(enumName)
, REFAllValuesIn\(enumName)
, REFMinIn\(enumName)
and REFMaxIn\(enumName)
REFStringForMember
and REFStringForMemberIn\(enumName)
don't work with enumerations containing duplicated values, e.g. with self-referencing members AccountTypeModerator = AccountTypeAdmin
And then import with: #import <ReflectableEnum/ReflectableEnum.h>
Arkadiusz Holko: