当前位置: 首页 > 知识库问答 >
问题:

不推荐使用“Hashable.HashValue”作为协议要求;通过实现“hash(into:)”使类型“carnivalwheel”符合“hashable”

白念
2023-03-14

似乎无法正确地更改散列(into:)?我做的每件事都会带来新的错误

如有任何帮助,我们将不胜感激,Swift 5

import UIKit
import TTFortuneWheel

class CarnivalWheel: FortuneWheelSliceProtocol, Codable, Hashable {
    static func == (lhs: CarnivalWheel, rhs: CarnivalWheel) -> Bool {
        return ObjectIdentifier(lhs) == ObjectIdentifier(rhs)
    }
    
    var hashValue: Int {
        return ObjectIdentifier(self).hashValue
    }
    
    enum Style: String, Codable, Hashable {
        case blue
        case purple
        case green
        case grey
        case orange
        case yellow
    }
    var style: Style = .blue
    var backgroundColor: UIColor? {
        switch style {
        case .blue: return TTUtils.uiColor(from: 0xdff9fb)
        case .purple: return TTUtils.uiColor(from: 0xa29bfe)
        case .green: return TTUtils.uiColor(from: 0x7bed9f)
        case . grey: return TTUtils.uiColor(from: 0xdfe4ea)
        case .orange: return TTUtils.uiColor(from: 0xffbe76)
        case .yellow: return TTUtils.uiColor(from: 0xf6e58d)
        }
    }
    
    var title: String
    var degree: CGFloat = 0.0
    
    init(title: String) {
        self.title = title
    }
    
    var fontColor: UIColor {
        return UIColor.black
    }
    
    var offsetFromExterior: CGFloat {
        return 10.0
    }
    
    var stroke: StrokeInfo? {
        return StrokeInfo(color: UIColor.white, width: 1.0)
    }
    
    convenience init(title: String, degree: CGFloat) {
        self.init(title: title)
        self.degree = degree
    }
}

共有1个答案

燕宏胜
2023-03-14
func hash(into hasher: inout Hasher) {
        hasher.combine(ObjectIdentifier(self))
    }

将添加一致性并创建与上面相同的哈希值。

 类似资料:
  • 问题内容: 编译错误如下: 类型“ AnyObject”不符合协议“ SequenceType” 这种压力是什么? 谁能帮我很多忙! 问题答案: 苹果在Swift编程语言中指出: for-in循环针对范围,序列,集合或进度中的每个项目执行一组语句。 目前,它仅符合protocol ,因此您无法在其上使用for循环。如果要这样做,则必须执行类似以下操作:

  • 问题内容: Beta 3一切正常,现在出现一个奇怪的错误,而且我不知道如何解决它。尝试了所有类似问题的解决方案。 这是我的代码: 两条标记线都给了我相同的错误: 类型“ String.Index”不符合协议“ IntegerLiteralConvertible” 有人能帮我吗?还是Beta 4有漏洞?谢谢! 问题答案: 在Beta 4中,Swift的String.Index处理再次发生了变化- 现

  • 问题内容: 文档说 该类已被弃用。有人可以建议我替代吗? 我在我的代码中这样使用它: 问题答案: 如果仔细阅读文档,您会发现应该使用它作为替代。 例如: 请注意,该类有多个构造函数,您可以通过它们提供 mimeType , content type 等。 在将 构建说明 传递给构建器之后,您可以通过调用方法来构建:

  • 我正在做一个项目,我的问题是WebSecurityConfigrerAdapter。它不起作用。上面写着“WebSecurityConfigrerAdapter类型已弃用”你知道为什么吗?你能帮我吗?我不知道该怎么办

  • 我正在使用Spring Boot 2.4.2版,并使用进行Spring Cloud Stream和Spring集成。 RabbitmqReceiverApplication.java 还有什么替代方案?那么如何重构上面的代码呢?随着速度的加快,很多事情正在发生,很难理解什么来了,什么走了?

  • 问题内容: 我正在使用Swift 2,并使用WeakContainer作为存储一组弱对象的方法,就像 然后在我的ViewController中,声明 但这是错误的 不支持将MyDelegate用作符合协议AnyObject的具体类型 我看到错误是成员已声明为,因此应该是对象。但是我也声明为。如何解决这个问题? 问题答案: 我有相同的想法,用泛型创建弱容器。 结果,我为创建了包装器,并为您的编译器错

  • 问题内容: 尝试按照Apple文档(和教程化的)创建Launch Helper时,我似乎遇到了麻烦,原因是将Objective- C代码移植到Swift中…在此方面,谁的编译器再也不过分了案件。 该错误似乎始终是: 我尝试过在多个位置进行转换,以防万一我只是在处理一个多余的,古老的原语(由Obj- C或Core Foundation引入)而无济于事。 为了以防万一,我尝试投射响应: 产生错误: …

  • 问题内容: 我正在尝试将泛型与协议混合在一起,而xD却变得非常困难 我在Android / Java项目中实现了某些架构,并且尝试将其重写以使其适合swift / iOS项目。但是我发现了这个限制。 ProtocolA ProtocolB ImplementProtocolA ImplementProtocolB 因此,当我尝试将ProtocolB设置为实现 ProtocolA的具体类型时,出现此