【问题标题】:Swift class "MyClass" does not have a member Named "My_Var" [duplicate]Swift 类“MyClass”没有名为“My_Var”的成员 [重复]
【发布时间】:2014-10-17 11:19:47
【问题描述】:

我在 Swift 中创建了一个如下所示的类,但它给出了错误:

“ApiUrls.Type”没有名为“webUrl”的成员

这是我的代码:

import UIKit

class ApiUrls {

    let webUrl:NSString = "192.168.0.106:8888"
    var getKey:NSString = webUrl + NSString("dev/sys/getkey") // here comes the error ApiUrls.Type' does not have a member named 'webUrl

}

这有什么问题?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    您不能使用另一个属性的值来初始化实例属性,因为在所有实例属性都初始化之前,self 不可用。

    即使在初始化器中移动属性初始化也不起作用,因为getKey 依赖于webUrl,所以getKey 在初始化之前无法初始化。

    我看到webUrl 是一个常量,因此将其设为静态属性可能是个好主意 - 类目前还不支持静态,因此最好的方法是使用私有结构:

    class ApiUrls {
        private struct Static {
            static let webUrl: String = "192.168.0.106:8888"
        }
    
        var getKey: String = Static.webUrl + "dev/sys/getkey"
    
    }
    

    另外,除非你有充分的理由,否则最好使用 swift 字符串而不是 NSString

    【讨论】:

    • 感谢您的解释
    【解决方案2】:

    据我所知,你不能像在类定义中那样初始化变量。

    尝试将变量声明为

    let webUrl:NSString = "192.168.0.106:8888"
    var getKey:NSString = ""
    

    并将其添加到 viewDidLoad

    getKey = webUrl + NSString("dev/sys/getkey")
    

    【讨论】:

    • 我没有从 UIViewController 扩展我的类。因此我不能覆盖 didViewLoad 方法感谢顺便说一句
    • 你可以在类的init()方法中进行然后....同样的效果
    猜你喜欢
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多