ios - Swift 4 - 对成员 '>' (iOS 11) 的引用不明确

标签 ios realm ios11 swift4 xcode9

转换为 Swift 4 语法后,我收到此误导性错误消息。

Ambiguous reference to member '>'

在这行代码上:

redCount = alerts!.filter { $0.dangerLevels.filter { $0.level.value == 4 }.count > 0 }.count

完整上下文代码:

alerts = realm.objects(Alerts).filter(NSPredicate(format: "department != nil")).sorted(byKeyPath: "departmentNumber")

redCount = alerts!.filter { $0.dangerLevels.filter { $0.level.value == 4 }.count > 0 }.count

错误消息根本不明确,我可以提供一些提示吗?

请记住,警报的类型为 Results<Alert>?

dangerLevel声明如下:let dangerLevels = List<DangerLevel>()

编辑:

以下是有关闭包内类型的一些附加信息。

let level = RealmOptional<Int>()

值来自 RealmOptional

public var value: T? {
        get {
            return underlyingValue.map(dynamicBridgeCast)
        }
        set {
            underlyingValue = newValue.map(dynamicBridgeCast)
        }
    }

编辑 2:我重写了语法以提高可读性,但以下是我的结果:

redCount = alerts!.filter { $0.dangerLevels.contains { ($0.level.value as! Int) == 4 } }.count

enter image description here

最佳答案

value 是一个泛型方法,当与文字(即没有定义类型的东西)进行比较时,编译器在确定要推断什么类型时遇到问题。一种解决方法是将 as Int 添加到表达式的一侧:

(为了可读性而稍微重写)

let alerts = realm.objects(Alerts).filter(NSPredicate(format: "department != nil")).sorted(byKeyPath: "departmentNumber")

let isRedLevel: (DangerLevel) -> Bool = { dangerLevel in
   ($0.level.value as Int) == 4
}
let hasRedLevels: (Alert) -> Bool = { alert in
    alert.dangerLevels.contains(where: isRedLevel)
}

redCount = alerts!.filter(hasRedLevels).count

定义一个常量也是可行的:

let redAlertType: Int = 4

并使用它代替文字4

关于ios - Swift 4 - 对成员 '>' (iOS 11) 的引用不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46523499/

相关文章:

swift - RealmSwift 没有这样的文件或目录

ios11 - 转换后的 SCN 文件(来自 DAE 文件)未显示在 sceneView 中

ios - 如果 NSExtensionActivationRule 设置为仅音频,则共享扩展不会出现在有能力的应用程序中

iOS Webview 分享应用

ios - 获取对象并将其分类为多个部分

ios - AVSpeechSynthesizer 支持哪些语言?

ios - 使用 Realm 加密功能是否会对应用商店提交产生影响?

swift2 - Realm Swift2 : Best practice for model and Realm model class separation

ios - 应用程序可以知道用户何时从 iOS 11 驾驶时驾驶请勿打扰功能吗?

ios - 立即切换输入类型时如何在iOS 11中获取表情符号键盘的高度?