Ios 检测是否至少修改了对象的一个属性

Ios 检测是否至少修改了对象的一个属性,ios,objective-c,key-value-observing,reactive-cocoa,kvc,Ios,Objective C,Key Value Observing,Reactive Cocoa,Kvc,我有一个包含许多字符串和可变数组的类。所有这些对象都表示表单数据。所以,若我修改textfield或将新照片添加到数组中,我会将这些数据保留在对象的属性中 如何创建验证器来检查某些属性是否已更改 例如,我已将一些照片添加到阵列中。然后我保存它。当我再次打开此屏幕时,我会看到保存的照片,但现在我想添加新照片 初始状态和向阵列添加新照片后的状态将不同,我希望跟踪它 我在这里看到的最简单的方法是保存所有对象的当前状态,然后将其与新状态进行比较 假设我有下一个变量: NSString *name; NS

我有一个包含许多字符串和可变数组的类。所有这些对象都表示表单数据。所以,若我修改textfield或将新照片添加到数组中,我会将这些数据保留在对象的属性中

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

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

初始状态和向阵列添加新照片后的状态将不同,我希望跟踪它

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

假设我有下一个变量:

NSString *name;
NSString *lastName;
NSMutableArray *photos;
例如,我可以使用KVC来检测某个对象是否被修改,但它可以用于阵列。所以,如果数组被修改,我们可以假设数据被更改了。但例如,如果我的属性名中有字符串@“Alex”,然后我从文本字段中再次将字符串@“Alex”放在这里,我可以将其与以前的状态和当前状态进行比较,并得出结论,如果字符串不同,则状态已更改。这条路对吗

  • 您可以尝试
    方法Swizzling
    ,例如:。挂接是否调用set方法

  • 您可以使用KVC或委托通知更改

  • 您可以使用
    不可变对象
    来确保对象未被更改,然后在创建对象时将其挂起


  • 是的,我知道像这样喝一杯,我认为使用这个选项很好。