小编Vit*_*wer的帖子

如何在Xcode 8.3中的'if let'语句中修复类型转换的警告?

请考虑以下代码:

let nsdate: NSDate? = NSDate()
if let date = nsdate as? Date { // a warning occurs here
    print(date)
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨如下: Conditional downcast from 'NSDate?' to 'Date' is a bridging conversion; did you mean to use 'as'?

从铸造NSDataData有同样的问题.怎么解决呢?

swift swift3

10
推荐指数
2
解决办法
3574
查看次数

如何在swift中获取枚举的名称而不是case的名称?

现在我需要一种方便的方法来获取枚举本身的名称?这是一个例子.

enum SimpleEnum {
    case firstCase
    case secondCase
    case thirdCase
}
let simpleEnum: SimpleEnum = .firstCase
print("\(simpleEnum)") // return the "firstCase", but I want "SimpleEnum"
Run Code Online (Sandbox Code Playgroud)

我知道以下代码可行.

enum SimpleEnum: CustomStringConvertible {
    case firstCase
    case secondCase
    case thirdCase

    var description: String { return "SimpleEnum" }
}
let simpleEnum: SimpleEnum = .firstCase
print("\(simpleEnum)") // Ok, it return "SimpleEnum"
Run Code Online (Sandbox Code Playgroud)

但是,我只想要一种通用方式,而不是为每个枚举键入"SimpleEnum".

syntax swift

1
推荐指数
1
解决办法
1476
查看次数

如何在swift中调用协议中的默认实现代码?

我在协议扩展中给出了一些默认的实现代码。但是如何在符合协议的类中调用此指定代码。这是一个例子:

class BaseClass {}
protocol ImplementedProtocol {
    func printInfo()
}
extension ImplementedProtocol where Self: BaseClass {
    func printInfo() {
        print("Hello! This is ImplementedProtocol")
    }
}

class SuperClass: BaseClass, ImplementedProtocol {
    func printInfo() {
        // I should do sth here.
        print("Hello! This is SuperClass")
    }
}
class SubClass: SuperClass {
    override func printInfo() {
        super.printInfo()
        print("This is SubClass")
    }

}

let a = SubClass()
a.printInfo() // I get "Here is SuperClass. Here is SubClass."
// But I want "Here is ImplementedProtocol. …
Run Code Online (Sandbox Code Playgroud)

syntax swift

1
推荐指数
1
解决办法
2419
查看次数

标签 统计

swift ×3

syntax ×2

swift3 ×1