gpt4 book ai didi

ios - 原始值的KVC集合运算符

转载 作者:行者123 更新时间:2023-12-01 16:00:14 25 4
gpt4 key购买 nike

集合运算符可以用于原始值吗?

我有一个具有原始属性duration的对象。

@property (nonatomic) NSTimeInterval duration;

我有这些对象的 NSArray,我想对数组使用收集操作来获取持续时间的总和。问题是 @"@sum.duration"期望使用 NSNumber代替。

我将不得不以老式的方式执行此操作,还是有使用原语的方法?

最佳答案

"Scalar and Structure Support"
在“键值编码编程指南”中:

键值编码提供对标量值和数据的支持
通过自动包装和拆开NSNumber和
NSValue实例值。

所以

NSNumber *sum = [array valueForKeyPath:@"@sum.duration"];

即使 duration是一个标量属性也可以使用。小自成一体的例子:
#import <Foundation/Foundation.h>

@interface MyClass : NSObject
@property(nonatomic, assign) NSTimeInterval duration;
@end

@implementation MyClass
@end

int main(int argc, const char * argv[])
{
@autoreleasepool {
MyClass *obj1 = [MyClass new];
obj1.duration = 123.4;
MyClass *obj2 = [MyClass new];
obj2.duration = 456.7;
NSArray *array = @[obj1, obj2];

NSNumber *sum = [array valueForKeyPath:@"@sum.duration"];
NSLog(@"sum = %@", sum);
}
return 0;
}

输出:580.1。

关于ios - 原始值的KVC集合运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20382791/

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