gpt4 book ai didi

objective-c - 如何在 Swift 中将自定义 Objc 结构转换为 NSValue?

转载 作者:行者123 更新时间:2023-11-30 10:31:39 24 4
gpt4 key购买 nike

我在 Objc 中定义了一个自定义结构

typedef struct {

int a;

int b;

} MyStruct;

在 Objc 中,我可以将结构转换为 NSValue 使用

MyStruct struct = {0};
NSValue *value = [NSValue value:&struct withObjCType:@encode(MyStruct)];

但是我怎样才能在 Swift 中做到这一点呢?

最佳答案

在 Objective-C 代码中的某个位置添加一个类似的函数

const char * __nonnull getMyStructOCT() {
return @encode(MyStruct);
}

并通过桥接 header 使其可供 Swift 代码使用。然后,在您的 Swift 代码中,您可以执行以下操作:

let myStructOCT = getMyStructOCT()  // can then reuse myStructOCT over and over
var s = MyStruct(a: 111, b: 222)
let v = NSValue(bytes: &s, objCType: myStructOCT)

如果你想检索值:

var s1 = MyStruct()
v.getValue(&s1) // s1 now has your value

关于objective-c - 如何在 Swift 中将自定义 Objc 结构转换为 NSValue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59081081/

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