如何有条件地在 Swift 中使用 OS 的目标版本中可能不存在的 class?

How do I conditionally use a class in Swift that may not be present in the targeted version of the OS?

This answer 解决了如何使用框架中的 Swift class,该框架可能未链接到应用程序,但存在于目标 OS 中。相关但有点不同的是,我想知道如何有条件地使用目标 OS 中可能未包含的 Swift class。例如,假设我有一个用 Swift 编写的应用程序,目标是 iOS 7。如果我在 iOS 8,我想使用 WKWebView,如果我在iOS 7. 这行不通:

if NSClassFromString("WKWebView") == nil {
    var wv = WKWebView()
} else {
    var wv = UIWebView()
}

因为我的应用程序目标 iOS 7,我得到一个编译时错误:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_WKWebView", referenced from:
      __TMaCSo9WKWebView in MyWebKitViewController.o

我试过将 WKWebView 分配给 AnyObject 属性,但我无法调用它的方法。那么我怎样才能让 Swift 在运行时只检查这些东西呢?

我是 Swift 的新手,所以我不知道这是否是 Swift,但我在另一个问题上发现了这一点。

http://floatlearning.com/2014/12/uiwebview-wkwebview-and-tying-them-together-using-swift/

 if (NSClassFromString("WKWebView") != nil) {
   // Use WebKit
 } else {
   // Fallback on UIWebView
 }

OP中的代码几乎正确;它只需要使用 != 而不是 ==:

if NSClassFromString("WKWebView") != nil {
    var wv = WKWebView()
} else {
    var wv = UIWebView()
}

要使其正常工作,请务必将 iOS 部署目标设置为 7.0。 否则会出现未定义的符号错误。