如何按属性值(日期)对包含 NSManagedObject 子类实例的 swift 数组进行排序

2023-11-27

我正在尝试对数组进行排序,如下所示这个问题的公认答案,但我遇到了 Isuru 在该答案的评论中提到的问题。也就是说,应按实体的“日期”属性对数组进行排序的代码会导致编译器抱怨“找不到成员‘日期’”

这是描述实体的 NSManagedObject 子类:

import Foundation
import CoreData

@objc(Entry)
class Entry: NSManagedObject {

    @NSManaged var date: NSDate
    @NSManaged var reflections: AnyObject
    @NSManaged var contactComment: NSSet
    @NSManaged var person: NSSet

    override func awakeFromInsert() {
        let now:NSDate = NSDate()
        self.date = now;
    }
}

这是尝试对数组进行排序的代码:

lazy var entries:[Entry] = {
    var days:[Entry] = self.managedObjectContext!.requestEntity("Entry")as [Entry]
    days.sort({$0.date < $1.date})

    var today:Entry = days.last!
    println(today.date)
    return days
}()

请注意,在该代码的后半部分,我能够访问并记录其中一个条目的“日期”属性,并且编译器对此没有问题。

我的排序语法正确吗?我没有看到这段代码还有其他问题吗?


这部分是因为 Swift 编译器没有给你一个有用的错误。真正的问题是NSDate无法与<直接地。相反,您可以使用NSDate's compare方法,像这样:

days.sort({ $0.date.compare($1.date) == NSComparisonResult.OrderedAscending })

或者,您可以扩展NSDate实施Comparable协议,以便可以将其与< (and <=, >, >=, ==):

public func <(a: NSDate, b: NSDate) -> Bool {
    return a.compare(b) == NSComparisonResult.OrderedAscending
}

public func ==(a: NSDate, b: NSDate) -> Bool {
    return a.compare(b) == NSComparisonResult.OrderedSame
}

extension NSDate: Comparable { }

Note:您只需要实施< and ==如上所示,然后是其余的运算符<=, >等将由标准库提供。

完成后,您原来的排序函数应该可以正常工作:

days.sort({ $0.date < $1.date })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何按属性值(日期)对包含 NSManagedObject 子类实例的 swift 数组进行排序 的相关文章

  • 替代已弃用的 NSNibLoading 方法(loadNibFile:、loadNibNamed: 等)?

    我发现 NSBundle 中的 NSNibLoading 方法 NSBundle loadNibFile externalNameTable withZone NSBundle loadNibNamed owner NSBundle loa
  • 根据图像制作具有 UIImageView 高度的 UICollectionViewCells

    我想做一个UICollectionView单元格的宽度是屏幕的宽度 但高度取决于单元格的宽高比UIImageView inside 在我目前的实施中 所有UICollectionViewCell实例是正方形 这不是我想要的 我想以某种方式使
  • Unix 排序实用程序:使用十六进制字节值作为分隔符

    我想知道是否可以使用十六进制值作为 Unix 的分隔符sort公用事业 基本上我想做一些类似的事情 sort t x00
  • Swift 中的弹出视图

    我有一个弹出视图 没有选项卡栏 它弹出到带有选项卡栏的视图控制器 在带有选项卡栏的视图控制器中 我设置了一个单击按钮 以便弹出视图控制器 IBAction func PopUpClicked sender UIButton gt Void
  • 如何通过组度量的平均值在 df 内排列 dplyr:: 组?

    借鉴吴卡拉的设计https stackoverflow com a 26555424 9350837 https stackoverflow com a 26555424 9350837答案 我希望根据各个组汇总测量的平均值对分组 df 进
  • Swift 数组设置索引值不起作用

    我有一个方法 下面的内容 其中queue2只是一个 Int 我打印了很多东西 看看一切是否都正常 public func cool item Int println item println back queue2 insert item
  • 根据数组计数填充复选框

    我是新来的php我已经使用了它的开发php array 我想填充checkboxes根据数组计数 为了做到这一点 我尝试了以下方式 它对我不起作用 有什么方法可以做到这一点 在我的例子中 数组计数 5 所以我相应地需要 5 个复选框
  • Powershell 数组到带引号的逗号分隔字符串

    我有一个数组 需要输出到逗号分隔的字符串 但我还需要引号 这是我所拥有的 myArray file1 csv file2 csv a myArray join a 输出为 a最终 file1 csv file2 csv 我想要的输出是 fi
  • 新的 FUITableViewDataSource - 如何使用?雨燕3

    刚刚更新到较新的 FirebaseUI Pod 有些事情发生了变化 但其中最大的变化之一是 FUI 表视图的工作方式 我让它在旧版本上运行良好 但在下面遇到了困难 并且缺乏文档 示例 self dataSource FUITableView
  • 在 Interface Builder 中调整控件的大小以适合其容器

    假设我有一个分割视图 我想用表视图填充其中的一半 我认为这是一个相当常见的用例 有什么方法可以告诉表视图调整自身大小以适应分割视图 还是我真的必须手动调整它的大小 我已经这样做了 就像乔恩 赫斯首先提到的那样 假设您使用的是 Interfa
  • 从 .NET 文本中提取关键字

    我需要计算每个关键字在字符串中重复出现的次数 并按最高次数排序 NET 代码中用于此目的的最快算法是什么 编辑 下面的代码将唯一标记与计数分组 string target src Split new char var results tar
  • 在 postgresql 9.4 或 9.5 中查询 json 对象的嵌套数组中的元素

    studentID 1 StudentName jhon Data schoolname school1 enrolmentInfo year 2015 info courseID csc213 school IT enrollmentda
  • 在Python 3中将二进制字符串转换为字节数组

    尽管有很多相关的问题 但我找不到任何符合我的问题的问题 我想更改二进制字符串 例如 0110100001101001 转换成字节数组 同一个例子 b hi 我试过这个 bytes int i for i in 011010000110100
  • 解析和更改 NSPredicate

    我必须将数据从以前的应用程序版本迁移到新版本 这也会影响一些谓词 NSPredicate实例 由用户保存 这意味着我必须以编程方式更改它们 目前我尝试解析我得到的字符串 NSPredicate predicateFormat 并手动更改一些
  • 在 Postgres 中的数组字段上应用聚合函数?

    是否可以对整数 字段 或其他数字数组 中的所有值应用聚合 如 avg stddev CREATE TABLE widget measurement integer insert into widget measurement values
  • swift 中的负数模

    负数模如何在 swift 中工作 当我执行 1 3 时 它给出 1 但余数是 2 其中有什么问题 雨燕余数运算符 计算余数 整数除法 a b a a b b where 是截断整数除法 在你的情况下 1 3 1 1 3 3 1 0 3 1
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • 如何自动为 Swift 类创建初始化程序?

    UPDATE 使用结构而不是类 struct 在很多方面都更好 它有自己的初始化器 这是我的模型课 是否有可能创建init自动方法 每次我都必须将所有变量一一初始化 这会花费很多时间 class Profile var id String
  • 在 Mac OS X 应用程序上找到 Core Data 的 sqlite 数据库

    在哪里可以找到 Mac OS X 应用程序的 Core Data sqlite 数据库 我找到了它 但它是 momd 文件夹 包含 3 个文件 VersionInfo plist mom omo 我怎样才能看到它的内容 在 OS X 10

随机推荐

  • 验证一个字段或另一个字段是否存在 (XOR)

    如何验证一个或另一个字段的存在 但不能同时验证两个字段和至少一个字段的存在 如果您将条件添加到数值验证中 您的代码将起作用 如下所示 class Transaction lt ActiveRecord Base validates pres
  • 如何退出或关闭(而不是杀死)Word文档(进程)?

    在我们公司 我们使用 Windows 应用程序生成 Word 2010 文档 有时文档没有正确关闭 因此另一个应用程序 是的 他们仍然称之为开发 杀死运行超过1分钟的word进程 这些被杀死的进程存储在MS Word的 文档恢复 中 这些文
  • 如何使控制中心滑块可编辑?

    我正在开发一个可以播放声音文件的应用程序 如果我打开苹果音乐应用程序 滑块可以让我在我所在的歌曲之间移动 其他应用程序 例如 Spotify 或 overcast 不允许这种行为 到目前为止 我已经能够更改控制中心的所有参数 但除外 有什么
  • opencv中cv::KeyPoint类的类成员class_id的含义和用途是什么?

    OpenCV 2 4 3参考手册中KeyPoint class id被描述为 可用于按其所属对象对关键点进行聚类的对象 ID 由于我对 关键点 缺乏足够的了解 我无法理解其目的是什么class id 我的另一个问题是 通过使用特征检测器 描
  • 是否可以可靠地将用户文件自动解码为 Unicode? [C#]

    我有一个网络应用程序 允许用户上传其内容进行处理 处理引擎需要 UTF8 并且我正在从多个用户的文件编写 XML 因此我需要确保可以正确解码上传的文件 因为如果我的用户知道他们的文件 我会感到惊讶were编码 我几乎不希望他们能够正确spe
  • 从 DOM 元素获取 ComponentRef

    已经回答了如何从 Angular 2 组件获取 DOM 元素 ComponentRef location nativeElement ComponentRef location 提供了可以直接访问 DOM 的 ElementRef But
  • 如何访问分配给不同进程的内存? [复制]

    这个问题在这里已经有答案了 我已编辑 1 c 如下 include
  • 将 stdout 和 stderr 重定向到分布式 shell 程序的套接字

    我制作了一个具有客户端和服务器的分布式 shell 程序 客户端向服务器发送命令请求 服务器在本地执行该命令 并将该命令的结果输出给客户端 我无法弄清楚如何将 stdout stderr 重定向到客户端 我使用 execvp 来执行命令 我
  • 在ajax spring mvc中返回ModelAndView

    你好 我使用 spring mvc ajax 我通过传递用户 ID 进行了 ajax 调用 一切顺利 成功返回 ajax 但是当我提醒响应时 它简单地显示了 html 页面代码 请帮我解决这个问题 我想我没有很好地编码我的ajax 帮助我以
  • 如何捕获 WebSocket 连接中断?

    在 Firefox 中 至少 如果你按 ESC 那么它将关闭所有打开的 WebSockets 连接 我需要捕获该断开连接 并在再次可用后尝试重新连接 这是我尝试实现的代码示例 但我无法弄清楚如何捕获错误并允许我优雅地处理它 看一下代码 ht
  • Visual Studio代码cmd错误:无法加载,因为在此系统上禁用了运行脚本

    在 Visual Studio 代码内部 我尝试从命令行执行 script bat 但出现以下错误 无法加载文件 C Theses Repo train cnn environment Scripts activate ps1 因为在此系统
  • C++ 函数将重复参数绑定到柯里化函数

    我试图理解柯里化和调用一个连接三个字符串的函数的概念 但只传递两个字符串并使用第二个参数两次 但是 当我这样做时 第二个参数根本没有发送到函数 并且它打印出一个空字符串 这是一些非常明显的错误吗 string concatthreestri
  • 在折叠选项卡中加载时,Slick 轮播的宽度为 0px

    当在折叠内容中加载光滑滑块时 在本例中为 Angular bootstrap 折叠插件 slick track div 的宽度为 0px 导致滑块尝试将所有幻灯片叠放在一起 当按箭头查看下一张幻灯片时 幻灯片将恢复正常 如果我选择滑块并想要
  • 为什么带有约束的通用扩展方法不被识别为扩展方法? [复制]

    这个问题在这里已经有答案了 可能的重复 通用扩展方法没有类型推断 考虑两种方法 public static IEnumerable
  • AngularJS ng-click 和 href 锚点

    如果锚点上同时存在 ng click 和 href 则 ng click 不起作用 如果可能的话 我希望两者都能工作 转到一条路线 然后运行一个函数 我的用例是我打开了一个带有链接面板的抽屉 当转到链接时我想关闭抽屉 有什么简单的方法可以让
  • F# - 公共文字

    有没有办法在类型上定义公共文字 C 中的 public const 显然 类型中的 let 绑定必须是私有的 并且 Literal 属性不能应用于成员 使用 属性 这会实现您正在寻找的魔力 此外 将文字属性放在诸如字符串之类的值上使其可以在
  • 注册插件和/或工作流程时出错。插件程序集不包含所需的类型或程序集内容无法更新

    我使用 CRM 2011 开发人员工具包在 Visual Studio 2010 中实现了一个自定义工作流程 它与系统生成的命名空间一起正常工作 但是 当我更改项目的名称空间时 它会抛出错误 注册插件和 或工作流程时出错 插件程序集不包含所
  • 如何在 Java 中实际解析 YAML 中的值? [复制]

    这个问题在这里已经有答案了 我有一个 YAML 文件 我将其用作配置文件 看起来是这样的 tests category some category test name hello key1 value1 key2 value2 name h
  • Docker 上的多模块 Maven 项目

    我有一个多模块 Maven 项目 其中单个模块都是包含自己的 Dockerfile 的可运行微服务应用程序 因此在生产中每个模块都将是一个容器化应用程序 包含子模块的父项目仅包含父 pom xml 和 docker compose yml
  • 如何按属性值(日期)对包含 NSManagedObject 子类实例的 swift 数组进行排序

    我正在尝试对数组进行排序 如下所示这个问题的公认答案 但我遇到了 Isuru 在该答案的评论中提到的问题 也就是说 应按实体的 日期 属性对数组进行排序的代码会导致编译器抱怨 找不到成员 日期 这是描述实体的 NSManagedObject