【发布时间】:2017-10-24 02:47:00
【问题描述】:
我目前对两个不同的数组有两个问题:
1) 在我的 Xcode 项目中,我有一个包含用于 tableView 的用户的数组。每个用户都是名为 users 的类的一部分:
class Users {
let userObjectID : String
let profilePhoto : UIImage
let fullname : String
let username : String
init(userObjectID : String, profilePhoto : UIImage, fullname : String, username : String) {
self.userObjectID = userObjectID
self.profilePhoto = profilePhoto
self.fullname = fullname
self.username = username
}
}
当我查找一个对象时,有可能 1 个用户可以拥有相同的对象两次,因此它将该用户两次附加到数组中,当数组放入 tableView 时,用户出现两次。如何根据用户的 userObjectID 取出重复的用户?我相信我得到数据后必须整理一下,但我不知道该怎么做。
2) 第二个问题是在加载到 tableView 之前按日期对包含类的另一个数组进行排序。这是我的课:
class Object {
var id: String?
var date: Date? //want to use for tableView order
var owner : String?
var ownerFullname : String?
var ownerProfilePic : UIImage?
var name: String?
}
我想按每个“对象”中的“日期”对数组进行排序,但我不知道该怎么做。
我们将不胜感激任何有关这两个或其中一个问题的指导。提前谢谢您。
【问题讨论】:
-
你需要让你的类符合 Equatable 协议。您还应该使其符合 Hashable 以便能够将您的类与 Set 一起使用。
-
另外,由于类的每个实例都代表一个用户,请考虑将您的类重命名为
User。其他阅读您的代码的人(以及未来的您自己)会感谢您;) -
不要将所有属性都设为可选。仅当属性确实可以为 nil 或无法在您的初始化时初始化时才将其设为可选。并将它们全部设为常量并提供所需的初始化程序。
-
看起来你没有继承任何东西,所以你应该考虑使用结构。
-
如果你需要对你的对象进行排序,你应该让它们也符合 Comparable 协议