检测是否至少有一个 属性 对象被修改

Detect if at least one property of object was modified

我 class 有很多字符串和可变数组。所有这些对象都代表表单数据。因此,如果我修改文本字段或将新照片添加到数组,我会将这些数据保存在我的对象属性中。

我如何创建验证器来检查某些属性是否已更改。

例如,我向数组中添加了一些照片。然后我保存它。当我再次打开此屏幕时,我看到了已保存的照片,但现在我想添加新照片。

初始状态和我添加新照片到数组后的状态会不一样,我想跟踪它。

我在这里看到的最简单的方法是保存所有对象的当前状态,然后将其与新状态进行比较。

假设我有下一个变量:

NSString *name;
NSString *lastName;
NSMutableArray *photos;

我可以使用例如 KVC 来检测某个对象是否被修改,但它适用于例如数组。所以如果数组被修改,我们可以假设数据被改变了。但是例如,如果我 属性 名称有字符串 @"Alex" 然后我再次从文本字段中将字符串 @"Alex" 放在这里,我可以将它与以前的状态和当前状态进行比较并得出结论如果字符串不同,则该状态已更改。这是正确的方法吗?

  1. 您可以尝试 Method Swizzling,例如:http://nshipster.com/method-swizzling/。挂钩你的set方法是否被调用

  2. 您可以使用 KVC 或 Delegate 来通知更改。

  3. 您可以使用 immutable object 来确保您的对象没有被更改,然后在创建时挂钩。