iOS: 如何在Constants.h中转换字符串中的类型?
iOS: How to transform a type in a string in the Constants.h?
我有一段代码适用于 class 声明和字符串声明,但我想通过了解将 class 名称声明转换为细绳。这是一个有效的例子:
#define FORM_TO_USE RegistrationForm_Renault_Sport
#define FORM_TO_USE_SWIFT @"RegistrationForm_Renault_Sport"
但我想要更通用的东西,例如:
#define FORM_TO_USE RegistrationForm_Renault_Sport
#define FORM_TO_USE_SWIFT [NSString stringWithFormat:@"%@",FORM_TO_USE]
或
#define FORM_TO_USE RegistrationForm_Renault_Sport
#define FORM_TO_USE_SWIFT String(FORM_TO_USE)
但是最后两个例子不起作用。
我的目标是在 swift 中使用它:
let anyobjectype : AnyObject.Type = NSClassFromString(FORM_TO_USE_SWIFT)!
let nsobjectype : NSObject.Type = anyobjectype as! NSObject.Type
let fieldsObjC: AnyObject = nsobjectype.init()
错误信息:
有什么想法吗?
我的解决方案是为每个 #define
宏创建一个 Objective-C class 方法 —— 返回宏值。例如。
Constants.h
#define FORM_TO_USE RegistrationForm_Renault_Sport
#define FORM_TO_USE_SWIFT [NSString stringWithFormat:@"%@",FORM_TO_USE]
@interface Constants : NSObject
+ (NSString *)formToUseSwift;
@end
Constants.m
@implementation Constants
+ (NSString *)formToUseSwift {
return FORM_TO_USE_SWIFT;
}
@end
Swift 文件
let anyobjectype : AnyObject.Type = NSClassFromString(Constants.formToUseSwift())!
let nsobjectype : NSObject.Type = anyobjectype as! NSObject.Type
let fieldsObjC: AnyObject = nsobjectype.init()
在我看来,这是避免两个代码在两个不同方面相似的唯一可能方法。
示例
https://github.com/trungducc/Whosebug/tree/swift-constant-from-objective-c
我有一段代码适用于 class 声明和字符串声明,但我想通过了解将 class 名称声明转换为细绳。这是一个有效的例子:
#define FORM_TO_USE RegistrationForm_Renault_Sport
#define FORM_TO_USE_SWIFT @"RegistrationForm_Renault_Sport"
但我想要更通用的东西,例如:
#define FORM_TO_USE RegistrationForm_Renault_Sport
#define FORM_TO_USE_SWIFT [NSString stringWithFormat:@"%@",FORM_TO_USE]
或
#define FORM_TO_USE RegistrationForm_Renault_Sport
#define FORM_TO_USE_SWIFT String(FORM_TO_USE)
但是最后两个例子不起作用。
我的目标是在 swift 中使用它:
let anyobjectype : AnyObject.Type = NSClassFromString(FORM_TO_USE_SWIFT)!
let nsobjectype : NSObject.Type = anyobjectype as! NSObject.Type
let fieldsObjC: AnyObject = nsobjectype.init()
错误信息:
我的解决方案是为每个 #define
宏创建一个 Objective-C class 方法 —— 返回宏值。例如。
Constants.h
#define FORM_TO_USE RegistrationForm_Renault_Sport
#define FORM_TO_USE_SWIFT [NSString stringWithFormat:@"%@",FORM_TO_USE]
@interface Constants : NSObject
+ (NSString *)formToUseSwift;
@end
Constants.m
@implementation Constants
+ (NSString *)formToUseSwift {
return FORM_TO_USE_SWIFT;
}
@end
Swift 文件
let anyobjectype : AnyObject.Type = NSClassFromString(Constants.formToUseSwift())!
let nsobjectype : NSObject.Type = anyobjectype as! NSObject.Type
let fieldsObjC: AnyObject = nsobjectype.init()
在我看来,这是避免两个代码在两个不同方面相似的唯一可能方法。
示例
https://github.com/trungducc/Whosebug/tree/swift-constant-from-objective-c