我已经创建了一个向导,供用户使用我的应用程序注册,但是,我对于如何在应用程序中存储信息存在一些疑问。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