转换或比较“ Unmanaged <NSString>和NSString

Pat*_*ick 2 struct objective-c swift

我在Objective-C中有一个带有此结构的框架:

VehicleClass.h

struct VehicleStruct
{
    __unsafe_unretained NSString *const CAR;
    __unsafe_unretained NSString *const MOTORCYCLE;
    __unsafe_unretained NSString *const TRUCK;
};
Run Code Online (Sandbox Code Playgroud)

VehicleClass.m

#import "VehicleClass.h"

const struct VehicleStruct Vehicle = {
    .CAR = @"CAR",
    .MOTORCYCLE = @"MOTORCYCLE",
    .TRUCK = @"TRUCK"
};
Run Code Online (Sandbox Code Playgroud)

在我的Contansts.h中

extern const struct VehicleStruct Vehicle;
Run Code Online (Sandbox Code Playgroud)

好吧,现在我想使用swift在我的proyect中获得汽车价值:

let carValueSwift = String(Vehicle.CAR)
Run Code Online (Sandbox Code Playgroud)

控制台中

“非托管NSString(_value:CAR)”

我该如何解决?我需要像NSString这样的值,因为如果要在我的框架中进行比较:

["CAR" isEqual: carValueSwift] 不起作用。

非常感谢你

Mar*_*n R 5

takeUnretainedValue()所述Unmanaged<NSString>被转换到NSString(没有取得所有权),并且这可以被简单地转换为夫特String

let carValueSwift = Vehicle.CAR.takeUnretainedValue() as String
print(carValueSwift)
Run Code Online (Sandbox Code Playgroud)