在目标c中,我可以创建一个类数组,并在方法中使用它
NSArray *classes = @[[NSAttributedString class]]; NSArray *items = [pasteboard readObjectsForClasses:classes options:nil];
let aClass : AnyClass! = NSAttributedString.self //or let aClass:AnyClass! = NSAttributedString.classForArchiver() let pasteboard = NSPasteboard.generalPasteboard() let classes = [aClass] let objects = pasteboard.readObjectsForClasses(classes,options: nil)
最后一行导致“致命错误:数组元素不能桥接到Objective-C”
如何在Swift中创建一个类数组?
显然,这已经在Beta 3中修复了,所以不再需要解决方法了
原文链接:https://www.f2er.com/swift/320607.html我发现了一个纯粹的Swift黑客:
func classFromType<T: NSObject>(type: T.Type) -> AnyObject! { return T.valueForKey("self") //ask for class indirectly... } var clazz: AnyObject = classFromType(NSAttributedString.self) var classes = [clazz]
以前的答案
我无法以Swift的方式获得Class实例。看来它不能直接从AnyClass转换。例如,以下是不可能的(将在运行时崩溃)
var classes: NSMutableArray = [] classes.addObject(NSClassFromString(NSAttributedString.className()))
所以我进入了Obj-C并定义了一个简单的NSMutableArray类别:
@implementation NSMutableArray (ClassArray) - (void)addClassByName:(NSString *)className { [self addObject:NSClassFromString(className)]; } @end
然后
var classes: NSMutableArray = [] classes.addClassByName(NSAttributedString.className())
作品,但它是一个黑客。