微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从Swift访问objective-c Struct

我正在开发一个混合了 swift和obj-c代码的ios应用程序.我的一个obj-c模型类定义一个包含字符串的结构,以帮助转换为字典并返回.我有桥接头设置,我可以在swift类中访问我的 objective-c类中定义的方法.我无法弄清楚的是如何访问静态stuct以获取我的属性字符串.这是我的.h和.m文件的片段:

OrderItem.h

extern const struct OrderItemAttributes {
    __unsafe_unretained Nsstring *created;
    __unsafe_unretained Nsstring *created_by_id;
    __unsafe_unretained Nsstring *device_deleted;
} OrderItemAttributes;

@interface OrderItem : NSManagedobject {}
@property (nonatomic,strong) NSDate* created;
@end

OrderItem.m

const struct OrderItemAttributes OrderItemAttributes = {
    .created = @"created",.created_by_id = @"created_by_id",.device_deleted = @"device_deleted",};

@implementation OrderItem
@dynamic created;
@end

我以为我只能使用

OrderItem.OrderItemAttributes.created

访问属性字符串,但swift不接受该语法.有没有办法做我想做的事情而不对我的objective-c代码进行重大改变?

解决方法

变量OrderItemAttributes不是OrderItem名称间的一部分.它将直接访问为:

var foo: Nsstring = OrderItemAttributes.created.takeUnretainedValue()

您看到自动完成的问题是因为OrderItemAttributes不明确;它既是类型名称,也是变量名称.对结构类型名称和@R_502_5695@使用不同的名称以避免歧义.例如,在类型名称的末尾添加“Struct”:

extern const struct OrderItemAttributesstruct {
    __unsafe_unretained Nsstring *created;
    __unsafe_unretained Nsstring *created_by_id;
    __unsafe_unretained Nsstring *device_deleted;
} OrderItemAttributes;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐