将新字符串从 objective-c 返回到 swift 时字符串损坏

Corrupted string when returning new string from objective-c to swift

我尝试从 Objective-C 中的枚举构建字符串:

+ (NSString *)getStringFromKey:(ITGenericNotification)key {
    return [NSString stringWithFormat:@"notification%lu", (long)key];
}

这段代码在一年多的时间里运行良好

然而,当我尝试从 swift 调用它时:

let notificationKey = NSNotification.getStringFromKey(ITNotificationWithObject.DidChangedQuestion.hashValue)

我得到一个损坏的字符串:

发生了什么事? ITGenericNotification 的值似乎是正确的,

ITGenericNotification 定义为 typedef long ITGenericNotification; 并用作具有 typedef NS_ENUM(ITGenericNotification, ITNotificationWithObject)

的枚举的基本类型

并且+ (NSString *)getStringFromKey:(ITGenericNotification)key被实现为NSNotification

的类别

您可能想要 .rawValue,而不是 .hashValue,以获得底层 枚举的整数值。

(调试器变量视图有时也是错误的。如有疑问, 在您的代码中添加 println()NSLog() 以验证的值 你的变量。)