gpt4 book ai didi

iphone - 扩展 NSManagedObject 实体对象是否安全

转载 作者:行者123 更新时间:2023-11-29 03:37:02 25 4
gpt4 key购买 nike

我正在为 iPhone 制作一个应用程序。我正在使用核心数据来存储大量信息,但遇到了一些轻微的障碍。

作为一个非常简单的示例,我有一个具有密码属性的实体。该属性是可选的。

我已经自动生成了一个 NSManagedObject 子类。

出于以下原因,我想做的是扩展这个子类。密码是可选的。如果用户决定应用程序不应该记住密码,那么我想要这个属性的自定义 getter 和 setter。

setter 将检查是否应存储密码。如果应该,则将其传递给实体子类。如果不是我自己的子类存储信息。

getter 将检查密码所在位置并返回密码。

优点是无论密码是否存储在核心数据模型中,类的行为都是相同的。

我尝试进行一些搜索,看看这是否会导致任何问题,但目前还没有真正遇到太多问题。

最佳答案

是的,这样做很好。您可以通过 NSManagedObject 子类上的 category 或自定义 settersgetters 来完成此操作。

但是,要小心您的自定义 settergetters

您将需要使用 NSManagedObject 的实例方法来获取和设置原始值(由数据模型管理)。

要获取基元,请使用primitiveValueForKey:。如需设置,请使用 setPrimitiveValue:forKey:

在这种情况下,我会为 NSManagedObject 子类上的 password 属性创建一个自定义 setter 。

类似这样的事情

- (void)setPassword:(NSString *)password
{
BOOL shouldSetPassword = ... // your custom logic here to determine if the password should be set or not

if (!shouldSetPassword)
return;

NSString *key = @"password";
NSString *value = [self primitiveValueForKey:key];

if (value == password)
return;

[self willChangeValueForKey:key];
[self setPrimitiveValue:password forKey:key];
[self didChangeValueForKey:key];
}

关于iphone - 扩展 NSManagedObject 实体对象是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19040823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com