如何在 iOS 中设置自定义属性? [复制]

Posted

技术标签:

【中文标题】如何在 iOS 中设置自定义属性? [复制]【英文标题】:How to set Custom Properties in iOS? [duplicate] 【发布时间】:2013-10-30 17:17:50 【问题描述】:

我正在使用 Core Data,并希望在设置属性时运行一些自定义代码。

@interface FTRecord : NSManagedObject

@property (nonatomic) NSTimeInterval timestamp;


@implementation FTRecord

@dynamic timestamp;

-(void)setTimestamp:(NSTimeInterval)newTimestamp

    //run custom code....

    //and now how to pass the value to the actual property?
    [self setTimestamp:newTimestamp];

在这种情况下,我为时间戳属性定义了设置器主体。但是如何在不陷入递归循环的情况下设置属性的值呢?

【问题讨论】:

@MartinR 我不认为这是同一个问题——你发现的问题是关于依赖属性的,而不是简单地编写你自己的设置器。 @JesseRusak:你可能是对的,问题不同,但答案是相同的(或至少非常相似)。 【参考方案1】:

为每个属性生成一个神奇的访问器,在您的情况下称为setPrimitiveTimestamp:,您可以使用它。查看 NSManagedObject 的 - (void)setPrimitiveValue:(id)value forKey:(NSString *)key 的文档。

所以,你想要:

-(void)setTimestamp:(NSTimeInterval)newTimestamp

    //run custom code....

    //and now how to pass the value to the actual property?
    [self willChangeValueForKey:@"timestamp"];
    [self setPrimitiveTimestamp:newTimestamp];
    [self didChangeValueForKey:@"timestamp"];

【讨论】:

杰西,谢谢。此方法列在Methods you must NOT override 下。 是的,没错。您需要重写 setTimestamp: 方法,就像您所做的那样,并从那里调用 setPrimitiveTimestamp: 我已经用一个例子更新了我的答案,我希望能澄清一下。 我已经添加了所需的 KVO 东西;我忘记了 NSManagedObject 选择退出自动通知。

以上是关于如何在 iOS 中设置自定义属性? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS相册中设置自定义相册的封面?

在 .NET Core 中设置自定义 <OutputPath> (停止添加框架目标)? [复制]

如何从 java api 在 keycloak 中设置自定义用户属性

如何在 iOS 的 WebView(react-native-webview) 中设置自定义字体?

在自定义单元格中设置自定义附件类型

VueJs 在选择选项中设置自定义属性值