gpt4 book ai didi

ios - 在单独的类中使用 func() 需要拥有该方法的类的实例

转载 作者:行者123 更新时间:2023-11-28 08:30:28 27 4
gpt4 key购买 nike

很抱歉,如果这是一个愚蠢的问题,但当我尝试在另一个类中使用函数时,它需要拥有它的类的实例。

class Economy {

let configuration = NSUserDefaults.standardUserDefaults()

func setBalance(amount: Double) {
configuration.setDouble(getBalance(), forKey: "balance")
}

func getBalance() -> Double {
return configuration.doubleForKey("balance")
}
}

当我在 setBalance 方法中使用 getBalance() 方法时,它工作正常,但是当我用它来定义一个不在方法中的变量或在另一个类中使用它时,我必须这样做:getBalance( self :经济)而不仅仅是获取余额()

我不确定这是问题还是什么,但我该如何解决?

最佳答案

从您的评论来看,您似乎根本不想要一个类(具有不同的实例):“我只想要一种能够使用这些方法的方法”。这在类中并不常见——通常,类实例拥有自己唯一的状态信息。不过,在您的情况下,所有 实例将保持相同的状态(standardUserDefaults)。

有两种方法可以做你想做的事——使用 singleton ,或者更简单地说,使用裸函数:

func setBalance(amount: Double) {
let configuration = NSUserDefaults.standardUserDefaults()
configuration.setDouble(getBalance(), forKey: "balance")
}

func getBalance() -> Double {
let configuration = NSUserDefaults.standardUserDefaults()
return configuration.doubleForKey("balance")
}

请注意,这些在任何类之外。然后你简单地说

setBalance(15)
print("\(getBalance()") // prints 15

另请注意,这些不一定是函数。你同样可以有效地说

var balance: Double {
set {
let configuration = NSUserDefaults.standardUserDefaults()
configuration.setDouble(getBalance(), forKey: "balance")
}
get {
let configuration = NSUserDefaults.standardUserDefaults()
return configuration.doubleForKey("balance")
}
}

在这种情况下

balance = 15
print("\(balance") // prints 15

关于ios - 在单独的类中使用 func() 需要拥有该方法的类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38968605/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com