【问题标题】:Detect if at least one property of object was modified检测对象的至少一个属性是否被修改
【发布时间】:2023-03-27 10:02:01
【问题描述】:

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

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

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

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

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

假设我有下一个变量:

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

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

【问题讨论】:

    标签: ios objective-c key-value-observing reactive-cocoa kvc


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

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

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

    【讨论】:

    • 是的,我知道 swizzling an like it,我认为使用这个选项很棒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2018-03-21
    相关资源
    最近更新 更多