objective-c - 如何在 Swift 中将自定义 Objc 结构转换为 NSValue?
问题描述
我在 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
推荐阅读
- ms-access - 使用 odbc 连接到多个 ms 访问数据库
- node.js - 有没有办法为所有模型全局禁用时间戳列?
- typescript - NestJS JwtStrategy 使用 configService 传递密钥
- css - 如何为div中的水平溢出添加样式
- c++ - FloydWarshall 无限
- jquery - 具有复杂 DOM 结构的输入/选择中的 JQuery DataTables 搜索
- javascript - 如何将数据列指定为行生成器中使用的属性?
- windows - Docker 使用来自主机的 ip
- python - 使用命名空间和 Python (lxml) 从 XML 获取 XML 属性
- ibm-cloud - IBM Watson 中的跳转错误