gpt4 book ai didi

objective-c - Swift: 'Int' 无法转换为 'ObjCBool'

转载 作者:行者123 更新时间:2023-11-30 10:13:08 25 4
gpt4 key购买 nike

在我的代码中,我有一个惰性变量:

lazy var myService = {
return JSObjection.defaultInjector().getObject(MyService) as? MyService
}()

在同一个文件中,我尝试调用 myService 的函数:

func foo() {
myService?.getSomeStringsFrom(nil)
}

MyService 在 Objective-C 源文件中定义:

@interface MyService : NSObject
- (NSArray *) getSomeStringsFrom:(NSString *)aString;
@end

@implementation MyService
- (NSArray *) getSomeStringsFrom:(NSString *)aString {
return nil;
}
@end

代码无法编译,因为调用 getSomeStringsFrom(nil) 触发错误消息(两次):

<unknown>:0: error: 'Int' is not convertible to 'ObjCBool'

这没有意义 - 我正在对其他服务做同样的事情,并且 XCode 不会提示它。这是编译器错误吗?我正在使用 XCode 6.4 和 Swift 1.2。

编辑:在深入研究代码后,我发现错误消息也可以通过实例化 MyService 来触发。在下面的回答中,您将看到问题的真正“根源”。

最佳答案

列出的 Objective-C 文件不完整。一开始,有一个关键的枚举定义,一旦在我的 Swift 代码中使用该文件,就会破坏编译过程:

typedef NS_ENUM(BOOL, Stuff) {
StuffX = YES,
StuffY = NO
};

显然,当涉及到枚举时,Swift 不喜欢 BOOL。我不知道为什么,但一旦我将 BOOL 转换为 Boolean 错误就消失了。

关于objective-c - Swift: 'Int' 无法转换为 'ObjCBool',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31804827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com