我有一个 iOS 应用程序,其中包含多个模型类和一个用于 API 调用的包装类,用于对我用作模型控制器的 Web 服务进行 API 调用。
这是一个简单模型对象的示例。
@interface Person : NSObject
@property (nonatomic, strong) NSString *firstName;
@property (nonatomic, strong) NSString *lastName;
+ (Person *)personWithFirstName:(NSString *)firstName lastName:(NSString *)lastName;
@end
为了从 web 服务中检索这个对象,我有一个模型控制器,我在其中实现了以下方法。
- (NSArray *)allPeople;
- (void)addPerson:(Person *)newPerson;
- (void)deletePerson:(Person *)newPerson;
目前这很棒。但是,我现在正在添加编辑功能,我也想将其包含在模型控制器中,但不确定构建它的最佳方式。显然,更新 Person 对象的最简单方法是直接访问对象的属性。但目前模型对象对 Web 服务一无所知,我想保持这种状态。我可以向模型控制器添加一个方法,例如
- (void)updatePerson:(Person *)person withFirstName:(NSString *)newFirstName
或类似的东西,并使 Person 对象上的属性只读,但这似乎不是很直观。尽管如此,如果不将控制器代码添加到模型类中,我想不出任何其他方法来做到这一点。这似乎是处理这种情况的适当方法吗?还有其他选择吗?
更新 我不知道上面在想什么,但我无法将模型对象上的属性设为只读,因为模型控制器类需要以某种方式访问和更新这些属性。这意味着可以绕过 api 包装器直接更新 person 对象,这很麻烦。有什么帮助吗?