【发布时间】:2018-12-22 08:03:49
【问题描述】:
我在一个名为 Anacii 的类中有一个数组,显然还有一个 AppDelegate 类。我试图在应用程序终止时将两个数组保存到 UserDefaults 中,这两个数组都位于 Anacii 类中。除了从 AppDelegate 类的 Anacii 类中获取两个数组外,一切正常。两个数组里面都有多个值(我用一些打印语句测试过),我可以从我的根视图控制器访问它们,它们里面的所有值都很好,但是当我从 AppDelegate 类中获取它们时它们返回为空数组。
下面是 Anacii 类中定义的两个数组:
class Anacii {
// MARK: - Anacs / Rarities
var anacs = [String]()
var rarities = [Int]()
...
}
这是我在根视图控制器中设置实际值的地方:
class HomeController: UITableViewController, CLLocationManagerDelegate {
private let a = Anacii()
...
override func viewDidLoad() {
super.viewDidLoad()
for _ in 1...10 {
collectAnac()
}
...
}
...
// MARK: - Other functions
func collectAnac() {
let rarity = a.generateRarity()
let anac = a.findAnac(rarity: rarity)
a.anacs.append(anac)
a.rarities.append(rarity)
...
}
}
最后,这里是我尝试从 AppDelegate 类访问变量的地方:
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
...
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
let a = Anacii()
let anacs = a.anacs // Comes out as []
let rarities = a.rarities // Comes out as []
...
}
}
AppDelegate 类底部的两个值(anacs 和 rarities)都等于 [](使用 print 语句测试)。
对不起,如果这是一个重复的问题,我查看了很多其他类似的帖子,但找不到适合我的答案。谢谢!
TL;DR: 您应该阅读整个内容,但是...尝试从 AppDelegate 类访问 Anacii 类中的两个数组会返回空列表,即使这两个数组不是空的 (其他类看到它们的所有值)。请参阅上面的代码。抱歉,如果这是重复的帖子。
【问题讨论】:
-
您的数组为空,因为您创建了
Anacii的新实例。 -
@rmaddy 哦,感谢您的澄清。我会在应用加载时尝试创建一个类的实例,看看是否可行。
标签: ios swift class appdelegate