【问题标题】:Initializer error message processing data初始化程序错误消息处理数据
【发布时间】:2018-04-19 22:00:31
【问题描述】:

我有这样的课:

struct myData {
    let dataOne: String
    let dataTwo: String
}

extension myData{

static func doSomeThingWithThis(someData:Any) -> String {
.
.
.
.
return str // is returning a string
}


init?(fromDict dict: [String: Any]) {

        guard let dataOne = dict["someKey"] as? String else {
            return nil
        }
guard let dataTwo = myData.doSomeThingWithThis(someData: dict["anotherKey"]) else{
            return nil
        }
self.init(
            dataOne: dataOne,
            dataTwo: dataTwo,
        )
}

但我在这一行的问题:

guard let dataTwo = myData.doSomeThingWithThis(someData: dict["anotherKey"]) else{
            return nil
        }

Xcode 具有以下错误/警告令人信服:

我尝试过这样的不同:

guard let dataTwo = myData.doSomeThingWithThis(someData: dict["anotherKey"]as? String) else{
            return nil
        }

或者这个:

guard let dataTwo = myData.doSomeThingWithThis(someData: dict["anotherKey"]as? String) else{
            return nil
        }

但 Xcode 仍然抱怨。你们中的任何人都知道如何解决此错误/警告?

非常感谢您的帮助。

【问题讨论】:

    标签: ios initialization swift4 xcode9


    【解决方案1】:

    由于doSomeThingWithThis(someData:Any) -> String 返回String 而不是可选的,因此您不能(也不需要)在保护语句中使用它。

    【讨论】:

    • 你能举个例子吗?因为我将函数的签名更改为 (someData:Any) -> String?现在正在抱怨“从'字符串隐式强制表达的表达式?'到任何“
    • 您可能希望将其作为单独的问题发布。评论确实不适合新的/更改的问题。
    猜你喜欢
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多