我尝试过使用字符串以多种方式创建类的实例,但是 在Swift 3中 都没有。
以下是我尝试过的无法使用的Swift 3之前的解决方案
-使课堂成为目标C课堂
@objc(customClass)
class customClass {
...
}
//Error here: cannot convert value of type 'AnyClass?' to expected argument type 'customClass'
let c: customClass = NSClassFromString("customClass")
-使用NSString值指定类(使用和不使用@objc属性)
@objc(customClass)
class customClass {
...
}
//Error here: cannot convert value of type 'String' to expected argument type 'AnyClass' (aka 'AnyObject.Type')
var className = NSStringFromClass("customClass")
let c: customClass = NSClassFromString(className)
我没有做正确的事,但没有在线找到任何解决方案。
如何在Swift 3中使用字符串创建类的实例?
您可以尝试以下方法:
func classFromString(_ className: String) -> AnyClass! {
/// get namespace
let namespace = Bundle.main.infoDictionary!["CFBundleExecutable"] as! String
/// get 'anyClass' with classname and namespace
let cls: AnyClass = NSClassFromString("\(namespace).\(className)")!
// return AnyClass!
return cls
}
像这样使用func:
class customClass: UITableView {}
let myclass = classFromString("customClass") as! UITableView.Type
let instance = myclass.init()
问题内容: 我正在尝试将String传递给我的。如何通过针对读者的“测试” 而不是来自读者的输入? 问题答案: 您可以如下修改代码
问题内容: 我正在遵循指南,它为我提供了以下代码: 我想知道的是如何仍然可以创建一个,但是不要读取文件的内容,而要使用一个已有的变量。 问题答案: 使用而不是。 请参阅StringReader的文档 例:
问题内容: 我不习惯在Java中使用流-如何从中创建流? 问题答案: 干得好: 更新 对于多字节支持使用(感谢 Aaron Waibel 的评论): 请参阅ByteArrayInputStream手册。 在上面的String#getBytes(charset)方法中使用charset参数是安全的。 在JDK 7+之后,您可以使用 而不是硬编码的编码字符串:
问题内容: 我正在使用ya-csv库,它希望将文件或流作为输入,但是我有一个字符串。 如何将该字符串转换为Node中的流? 问题答案: 从节点12.3开始,stream.Readable有一个方法可以轻松地从任何可迭代对象(包括数组文字)创建流:
我需要将字符串转换为JSONObject