更新:我知道我的解决方案不起作用。我正在寻找另一种方法来解决这个问题:)
代码: public gist
我正在尝试创建一个API类,为restkit构建一些常用的方法,这样我就可以重用相同的代码来将对象和POST,GET或PUT映射到我的Web API。实例化API类时,我调用responseDescriptorWithMapping,并传递一系列参数,如下所示。
这个工作正常,直到我尝试将方法名称作为参数传递。
例如:
_api = [[snapApi alloc] initWithconfigureRestKit:[Profile class] objectMapping:@{ @"_id": @"_id", @"headline": @"headline" } httpMethod:@"RKRequestMethodPOST"];
我在运行时看到此警告和后续失败:
Incompatible pointer to integer conversion sending '__strong id' to parameter of type 'RKRequestMethod' (aka 'enum RKRequestMethod')
restkit方法被定义为采用RKRequestMethod类的对象。是否可以使用objective-c将方法名称(以字符串的形式)作为函数的参数传递?如果不是,我怎么能动态地做到这一点?
(instancetype)responseDescriptorWithMapping:(RKMapping *)mapping
method:(RKRequestMethod)method
pathPattern:(NSString *)pathPattern
keyPath:(NSString *)keyPath
statusCodes:(NSIndexSet *)statusCodes
提前致谢。
答案 0 :(得分:0)
RKRequestMethod被定义为一个位掩码而不是一个类,所以你不能真正传递一个字符串作为方法参数,(即`@“RKRequestMethodPOST”'将不起作用)
typedef NS_OPTIONS(NSInteger, RKRequestMethod) {
RKRequestMethodGET = 1 << 0,
RKRequestMethodPOST = 1 << 1,
RKRequestMethodPUT = 1 << 2,
RKRequestMethodDELETE = 1 << 3,
RKRequestMethodHEAD = 1 << 4,
RKRequestMethodPATCH = 1 << 5,
RKRequestMethodOPTIONS = 1 << 6,
RKRequestMethodAny = (RKRequestMethodGET |
RKRequestMethodPOST |
RKRequestMethodPUT |
RKRequestMethodDELETE |
RKRequestMethodHEAD |
RKRequestMethodPATCH |
RKRequestMethodOPTIONS)
};