如何在Swift中创建一个类数组

如何在Swift中创建一个类数组,第1张

概述在目标c中,我可以创建一个类数组,并在方法中使用它 NSArray *classes = @[[NSAttributedString class]];NSArray *items = [pasteboard readObjectsForClasses:classes options:nil]; 但是,swift 在目标c中,我可以创建一个类数组,并在方法中使用它
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中创建一个类数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1054629.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存