gpt4 book ai didi

swift - 如何快速对数组中的不同结构模型进行排序?

转载 作者:行者123 更新时间:2023-11-28 15:11:16 25 4
gpt4 key购买 nike

  1. 我有 unsortedArray[AnyObject] 数组。我在其中添加了三个结构模型(通知模型、YouCard 模型、欢迎模型)。所有这三个模型都包含字符串格式的“time_stamp”参数。现在我无法根据 time_stamp 对模型进行排序。

  2. 我不太喜欢 swift 函数。我尝试了一种解决方案,但它不起作用

    enter image description here

最佳答案

这是使用协议(protocol)的经典案例,尽可能避免将数组声明为 [AnyObject] 甚至 [Any]

  • 创建协议(protocol),所有采用该协议(protocol)的结构体都必须实现timestamp

    protocol TimeStampable {
    var timestamp : TimeInterval { get }
    }
  • 创建三个类

    struct NotificationCard : TimeStampable {
    var timestamp : TimeInterval = 34837465928
    }

    struct YouCard : TimeStampable {
    var timestamp : TimeInterval = 67837465928
    }

    struct WelcomeCard : TimeStampable {
    var timestamp : TimeInterval = 92837465928
    }
  • 而不是未指定的 [AnyObject] 将数组声明为 [TimeStampable]

    let unsortedArray : [TimeStampable] = [YouCard(), WelcomeCard(), NotificationCard()]
  • 现在你可以对数组进行排序了

    let res = unsortedArray.sorted{ $0.timestamp < $1.timestamp }

如果您必须使用其他公共(public)成员或函数,请将它们添加到协议(protocol)声明中并在结构中实现它们和/或使用协议(protocol)扩展。

关于swift - 如何快速对数组中的不同结构模型进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47598436/

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