gpt4 book ai didi

ios - 在 NSDictionary 中存储 C float 组

转载 作者:可可西里 更新时间:2023-11-01 04:35:50 25 4
gpt4 key购买 nike

我正在尝试将 c-float 数组 存储在 NSDictionary 中以备后用。
我最初使用 NSArray 来存储 C 数据,但是 NSArray 对我的意图来说是慢的。

我使用以下代码将数组包装在 NSDictionary 中:

[self.m_morphPositions setObject:[NSValue valueWithBytes:&positionBuff objCType:@encode(float[(self.m_countVertices * 3)])] forKey:fourCC];

并使用以下方法检索 C-Float 数组:

float posMorphs[(self.m_countVertices*3)];

NSValue *posValues = [self.m_morphPositions objectForKey:name];

[posValues getValue:&posMorphs];

当我退出数组时,每个索引的值都设置为 0.0,这是错误的。

我该如何解决这个问题?

最佳答案

我也认为 NSData可能是这里最好的解决方案。但只要有人感兴趣:你不能使用 @encode使用可变大小的数组,因为它是一个编译器指令。因此

@encode(float[(self.m_countVertices * 3)])

无法工作。实际上,编译器在这里为大小为零的 float 组创建了编码,这解释了为什么在读取 NSValue 时什么也得不到。 .

但是您可以在运行时创建类型编码字符串。对于 float 组,编码是[<count>^f] (参见 Type Encodings ),因此以下内容可行:

const char *enc = [[NSString stringWithFormat:@"[%d^f]", (self.m_countVertices * 3)] UTF8String];
NSValue *val = [NSValue valueWithBytes:positionBuff objCType:enc];

关于ios - 在 NSDictionary 中存储 C float 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15851684/

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