gpt4 book ai didi

iphone - 我通常如何使用 KVC 来更新字段?

转载 作者:搜寻专家 更新时间:2023-10-30 20:08:22 25 4
gpt4 key购买 nike

假设我有以下 Objective-C 类:

@interface Foo {
int someNumber;
NSString *someString;
}

由于我不会在这里深入的原因,我想使用 KVC 以通用方式更新这些变量的值:

[f setValue:object forKey:@"someNumber"];

or

[f setValue:object forKey:@"someString"];`

如果 object 是一个字符串并且我正在更新 someNumber 变量,看来我需要知道使用 NSNumberFormatter 来获取 NSNumber 然后 Cocoa 自动将其转换为 setValue:forKey: 中的 int。

有什么方法可以避免这种自定义代码并让 Cocoa 推断从字符串到 int 的转换,还是我需要每次都捕捉到这种情况并自己处理?

最佳答案

只要 object 参数是实现 integerValue 的类的成员,下面的代码就会自动处理转换。

注意 NSNumberNSString 都实现了这个方法。

- (void)setValue:(id)object forKey:(NSString *)key
{
if ([key isEqual:@"someNumber"])
{
someNumber = [object integerValue];
}
//...
}

编辑:(边注):您可以使用 objective-c 属性避免自己编写方法。 setValue:forKey: 的默认实现将为您完成这项工作,只要您为 someNumbersomeString 创建属性即可。

关于iphone - 我通常如何使用 KVC 来更新字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/299390/

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