【发布时间】:2016-05-26 13:36:58
【问题描述】:
我有一个带有这个结构的 Objective-C 框架:
VehicleClass.h
struct VehicleStruct
{
__unsafe_unretained NSString *const CAR;
__unsafe_unretained NSString *const MOTORCYCLE;
__unsafe_unretained NSString *const TRUCK;
};
VehicleClass.m
#import "VehicleClass.h"
const struct VehicleStruct Vehicle = {
.CAR = @"CAR",
.MOTORCYCLE = @"MOTORCYCLE",
.TRUCK = @"TRUCK"
};
在我的 Contansts.h
extern const struct VehicleStruct Vehicle;
好吧,现在我想在我的项目中使用 swift 获得汽车价值:
let carValueSwift = String(Vehicle.CAR)
在控制台中:
“非托管 NSString(_value: CAR)”
我该如何解决这个问题?我需要像 NSString 一样获取这个值,因为如果那时我想在我的框架中进行比较:
["CAR" isEqual: carValueSwift] 不起作用。
非常感谢
【问题讨论】:
-
您为什么使用
__unsafe_unretained而不是weak? -
__weak 给出下一个错误:ARC forbids Objective-C objects in struct
-
啊,当然,你不能在结构中使用
weak。
标签: objective-c swift struct