我有一个用Obj-C编写的框架,我必须修改它,并且我很难尝试使用一个布尔值的Obj-C函数。我是Swift开发人员。
我如何在Obj C中执行此操作?
- (void)loginWithSamlToken:(Boolean *)saml credentialToken:(NSString *)credentialToken completionHandler:(METLogInCompletionHandler)completionHandler {
[self loginWithMethodName:@"login" parameters:@[@{@"saml": saml}, @{@"credentialToken": credentialToken}] completionHandler:completionHandler];
}
我在第二行发现错误{@“saml”: saml }“: 'Boolean *'类型的集合元素(又名'unsigned char *')不是Objective-C对象
如何在Obj-C中传递Bool?任何帮助都会非常有用
任何有关此转换的帮助都会非常有用!谢谢
答案 0 :(得分:2)
您需要将布尔值传递给nsnumber对象,并将nsnumber对象存储为saml。你不能在字典中有bool值。你只能有对象。
试试这个:
- (void)loginWithSamlToken:(BOOL)saml credentialToken:(NSString *)credentialToken completionHandler:(METLogInCompletionHandler)completionHandler {
NSNumber *boolNumber = [NSNumber numberWithBool:saml];
[self loginWithMethodName:@"login" parameters:@[@{@"saml": boolNumber}, @{@"credentialToken": credentialToken}] completionHandler:completionHandler];
}
你也可以简单地在@()中包围saml,这使得它成为NSNumber
个对象。所以{@"saml": saml}
将成为{@"saml": @(saml)}
- 归功于@rmaddy