
NSArray *classes = @[[NSAttributedString class]];NSArray *items = [pasteboard readobjectsForClasses:classes options:nil];
但是,swift没有“类”功能。为类返回元类型会导致错误
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中修复了,所以不再需要解决方法了我发现了一个纯粹的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())
作品,但它是一个黑客。
总结以上是内存溢出为你收集整理的如何在Swift中创建一个类数组全部内容,希望文章能够帮你解决如何在Swift中创建一个类数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)