我已經創建了一個嚮導,供用戶使用我的應用程序註冊,但是,我對於如何在應用程序中存儲信息存在一些疑問。iOS創建對象最佳實踐
我有一個User
模型,這是充滿了當用戶從數據庫中抽取,但是,也有對這個模型的一些需要領域,如果我要使用它作爲對象,不會填寫當用戶通過嚮導時傳遞。
這裏是我的User
型號:
通知變量id
和timeCreated
。這些都是在將新行添加到數據庫中的Users
表時生成的,因此,在實際創建用戶之前,我不會爲這些變量創建值。
此外,我想添加一些方法到模型,如validateUser
這將是一種方法,確保所有的字段填寫,validateEmail
這將是一種方法,確保電子郵件是在適當的語法,等等...
我的問題是,我應該
A.只是讓這些常量可選的,這些方法添加到我目前的User
模式
B.使另一個模型稱爲CreateUserModel
只有變量對於該信息的用戶將填寫並把多餘的方法有
UPDATE
我更新了我的User
類使用字典作爲存儲機制,它已經看起來很乾淨。但是,想到的問題是,另一位程序員如何知道他可以從User
模型中獲取哪些字段,因爲我不再將它們單獨存儲爲變量。他們只需要檢查數據庫並查看錶格的結構?
這是我更新的用戶等級:
final class User: NSObject, ResponseObjectSerializable, ResponseCollectionSerializable {
var properties = NSDictionary()
init?(response: NSHTTPURLResponse, representation: AnyObject) {
if let dataRepresentation = ((representation as! NSDictionary).valueForKey("data") as? [String: AnyObject]) {
properties = dataRepresentation
}
properties = representation as! NSDictionary
}
static func collection(response response: NSHTTPURLResponse, representation: AnyObject) -> [User] {
var users: [User] = []
if let dataRepresentation = ((representation as! NSDictionary).valueForKey("data") as? [NSDictionary]) {
if let dataRepresentation = dataRepresentation as? [[String: AnyObject]] {
for userRepresentation in dataRepresentation {
if let user = User(response: response, representation: userRepresentation) {
users.append(user)
}
}
}
}
return users
}
}
並將驗證方法添加到用戶模型是這樣的最佳實踐,對嗎?或者我應該將它添加到控制器? – Thomas
@Thomas唯一的問題是:你認爲應該如何_體驗用戶認爲有效的知識?這聽起來像你認爲這是用戶本身,這也是我的直覺本能。 - 查看它的一個好方法是:假設我們改變了我們的規範,或者假設我們想在另一個應用中重用用戶。當然,讓用戶知道如何驗證自己會給我們最大的靈活性來做到這一點。 – matt
謝謝@matt。關於你的答案我只有最後一個問題,我更新了我的問題以顯示它。謝謝! – Thomas