2
我想重構我的代碼以應用乾淨的方法。如何避免以正確的方式使用單身人士?
我有一個類user
class User {
let name: String?
let id: String
var isOnline: Bool
var mesaageHistory = [Message]()
init(name: String, id: String, isOnlineStatus: Bool) {
self.name = name
self.id = id
self.isOnline = isOnlineStatus
}
}
然後我用布料上的圖案創建我的用戶列表。
protocol CreateUserProtocol: class {
func sortArray(inputArr: [User])
}
class CreateUserEntity: CreateUserProtocol {
static let shared = CreateUserEntity()
var users = [User]()
func sortArray(inputArr: [User]){
var applySortingByDate: Bool = false
for user in inputArr {
if !user.mesaageHistory.isEmpty {
applySortingByDate = true
}
}
if applySortingByDate {
inputArr.sorted(by: { (first, second) -> Bool in
(first.mesaageHistory.last?.messageTime)! < (second.mesaageHistory.last?.messageTime)!
})
} else {
inputArr.sorted(by: { (first, second) -> Bool in
first.name! < second.name!
})
}
}
}
一個控制器負責追加新用戶,而另一個控制器用於檢索它們並將它們綁定到tableView。一切工作正常,但我認爲我的解決方案不足以擴展。
此外,在我的一個VC中,我使用我的用戶進行在線和離線排序。我想,我不應該這樣做,在我的VC,並把這種邏輯到我CreateUserEntity
var onlineUsersData = [User]()
var offlineUsersData = [User]()
private func classifyUsers() {
for user in CreateUserEntity.shared.users {
print("is user online: \(user.isOnline)")
print(CreateUserEntity.shared.users.count)
if user.isOnline == true && !onlineUsersData.contains(user) {
onlineUsersData.append(user)
}
if user.isOnline == false && !offlineUsersData.contains(user) {
offlineUsersData.append(user)
}
}
}
我想重寫它在適當的方式,你能推薦我嗎?
如果你投票的答案嘗試分享你的經驗,因爲我聽到也學習。 –
我不是profi,但我認爲將用戶存儲在UserDefaults中並不符合最佳實踐方法。 – dand1
@ dand1這只是在現實世界中的示例,您應該使用更安全的方式來存儲用戶數據。這僅僅是一個例子,它有可能實現。 –