相关疑难解决方法(0)

如何在Swift中打印变量的类型或类?

有没有办法在swift中打印变量的运行时类型?例如:

var now = NSDate()
var soon = now.dateByAddingTimeInterval(5.0)

println("\(now.dynamicType)") 
// Prints "(Metatype)"

println("\(now.dynamicType.description()")
// Prints "__NSDate" since objective-c Class objects have a "description" selector

println("\(soon.dynamicType.description()")
// Compile-time error since ImplicitlyUnwrappedOptional<NSDate> has no "description" method
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我正在寻找一种方法来显示变量"很快"是类型ImplicitlyUnwrappedOptional<NSDate>,或至少NSDate!.

types swift

325
推荐指数
16
解决办法
20万
查看次数

你如何找到一个对象的类型(在Swift中)?

当试图理解程序时,或者在某些角落情况下,能够真正找出什么类型的东西是有用的.我知道调试器可以显示一些类型信息,你通常可以依赖类型推断来避免在那些情况下不指定类型,但是,我仍然喜欢像Python这样的东西type()

dynamicType(查看此问题)

更新:这在最近的Swift版本中已经更改,obj.dynamicType现在为您提供类型的引用,而不是动态类型的实例.

这个似乎是最有希望的,但到目前为止我还没有找到实际的类型

class MyClass {
    var count = 0
}

let mc = MyClass()

# update: this now evaluates as true
mc.dynamicType === MyClass.self
Run Code Online (Sandbox Code Playgroud)

我也尝试使用类引用来实例化一个新对象,这确实有效,但奇怪地给了我一个错误,说我必须添加一个required初始化器:

作品:

class MyClass {
    var count = 0
    required init() {
    }
}

let myClass2 = MyClass.self
let mc2 = MyClass2()
Run Code Online (Sandbox Code Playgroud)

尽管如此,实际发现任何给定对象的类型仍然只是一小步

编辑:我删除了大量现在无关的详细信息 - 如果您有兴趣,请查看编辑历史记录:)

typechecking swift

242
推荐指数
10
解决办法
20万
查看次数

Swift类内省和泛型

我试图class使用泛型动态创建基于实例的类型,但是我遇到了类内省的困难.

以下是问题:

  • 是否有一个与Obj-C相当的Swift self.class
  • 有没有办法使用AnyClass结果实例化一个类NSClassFromString
  • 有没有办法AnyClass从通用参数中获取或以其他方式严格输入信息T?(类似于C#的typeof(T)语法)

introspection swift

118
推荐指数
5
解决办法
6万
查看次数

标签 统计

swift ×3

introspection ×1

typechecking ×1

types ×1