我在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);
}


并通过桥接标头将其提供给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/

10-10 23:19