在Objective-C中传递bool

时间:2016-04-22 15:09:28

标签: objective-c

我有一个用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?任何帮助都会非常有用

任何有关此转换的帮助都会非常有用!谢谢

1 个答案:

答案 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