将新字符串从 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()
以验证的值
你的变量。)
我尝试从 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()
以验证的值
你的变量。)