如何在 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 中设置自定义属性? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 .NET Core 中设置自定义 <OutputPath> (停止添加框架目标)? [复制]
如何从 java api 在 keycloak 中设置自定义用户属性