ios - 如何从 Swift3 iOS 中的对象数组中找到唯一值
问题描述
我已经声明了一个Array
赞:
var sessionsToDisplayTemp : [SessionData] = []
的值为sessionsToDisplayTemp
:
[<SessionData: 0x600001c16a30> (entity: SessionData; id: 0x8b2a8ba144e57f29 <x-coredata://0A752C13-D33E-4AE2-BE3E-7B856C0EE8D9/SessionData/p3> ; data: {
startTime = "14:30";
switchInGroup = FALSE;
}), <SessionData: 0x600001c16a80> (entity: SessionData; id: 0x8b2a8ba144f97f29 <x-coredata://0A752C13-D33E-4AE2-BE3E-7B856C0EE8D9/SessionData/p4> ; data: {
startTime = "13:30";
switchInGroup = TRUE;
}), <SessionData: 0x600001c16cb0> (entity: SessionData; id: 0x8b2a8ba144fd7f29 <x-coredata://0A752C13-D33E-4AE2-BE3E-7B856C0EE8D9/SessionData/p5> ; data: {
startTime = "13:30";
switchInGroup = FALSE;
})]
我的问题是我必须检查开始时间,如果开始时间相同,那么必须从这个数组中隐藏,这个数组应该按照开始时间的顺序。我的意思是最终的数组应该是:
[<SessionData: 0x600001c16a30> (entity: SessionData; id: 0x8b2a8ba144e57f29 <x-coredata://0A752C13-D33E-4AE2-BE3E-7B856C0EE8D9/SessionData/p3> ; data: {
startTime = "13:30";
switchInGroup = TRUE;
}), <SessionData: 0x600001c16a80> (entity: SessionData; id: 0x8b2a8ba144f97f29 <x-coredata://0A752C13-D33E-4AE2-BE3E-7B856C0EE8D9/SessionData/p4> ; data: {
startTime = "14:30";
switchInGroup = FALSE;
})]
我已经使用以下方法根据开始时间完成了上升部分:
sessionsToDisplayTemp.sort(by: { $0.startTime?.compare(($1.startTime)!) == .orderedAscending })
任何人都可以帮助我实现这一目标。谢谢你。
解决方案
out
这将创建一个已排序且没有重复的数组
var out = [SessionData]()
for data in sessionsToDisplayTemp.sorted(by: { $0.startTime < $1.startTime}) {
if out.isEmpty {
out.append(data)
} else if let last = out.last, last.startTime != data.startTime {
out.append(data)
}
}
推荐阅读
- redirect - 从 http 重定向到 https 时无法使用 TomEE 返回 301
- vb.net - 如何获取当前绑定到控件的 bindingsource 的名称
- sql - sql rank 显示请求的rank数
- javascript - FireFox 上的 contentEditable div 多行问题
- c++ - 为什么某些延迟加载 DLL 会立即用 FFMPEG 卸载?
- automake - 强制 libtool 与 libdl.so 链接
- java - 我无法弄清楚为什么 JPA 无法生成匹配表
- c++ - 如何将 Lua 添加到 C++ 项目中
- c# - 在 MVC 程序中调用 Web API
- react-native - 关于 Auth Flow 和 React Navigation 的问题(React Native)