Swift 类“MyClass”没有名为“My_Var”的成员 [重复]

Posted

技术标签:

【中文标题】Swift 类“MyClass”没有名为“My_Var”的成员 [重复]【英文标题】:Swift class "MyClass" does not have a member Named "My_Var" [duplicate] 【发布时间】: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


这有什么问题?

【问题讨论】:

【参考方案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()方法中进行然后....同样的效果

以上是关于Swift 类“MyClass”没有名为“My_Var”的成员 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何制作一个快速的类对象数组的深层副本

(Swift)如何从元组数组[(Date, MyClass)]中获取元组元素(Date, MyClass)的索引?

使用键和值约束扩展字典

Swift类型参考!

Swift类型参考!

在 Jar 文件中运行类