麻烦交际班值
问题描述:
我正在学习swift atm,在最近两周里,课程的使用让我很忙。麻烦交际班值
感谢您的帮助
在Xcode中我创建了一个包含初始化字符串空字符串/数组类迅速文件的项目。 那么该类中的一个函数就是从google firebase中检索数据来填充这些字符串。
比在viewcontroller类是想要检索这两个字符串。它是如何做到的? 到目前为止,我尝试了许多不同的想法,但我要么得到空字符串(在课程开始时初始化),要么我得到错误
理想情况下,每次viewcontroller类的viewdidload()希望它用最新的数据创建类的一个实例。
class RetrieveDatabase {
//static let sharedInstance = RetrieveDatabase()
var allMessages = [[String]]()
var messages = [String]()
var categorieNames = [String]()
func loadGoogleValue() -> (allMessages: [[String]], categorieNames: [String]) {
//this function works, the arrays contain type [string] and string
return (self.allMessages, self.categorieNames)
}
/*
-> i tried initializers in so many variations...
init(allMessages: [[String]], categorieNames: [String]) {
self.allMessages = loadGoogleValue().allMessages
self.categorieNames = loadGoogleValue().categorieNames
messages = []
}
*/
}
这里从视图 - 控制类的代码:
class SettingsView: UIViewController {
let retrieveDatabase = RetrieveDatabase.//tried everything here, only errors
override func viewDidLoad() {
super.viewDidLoad()
label1.text = retrieveDatabase.categorieNames[0]
}
}
答
我已经简化你的代码的东西,你可以很容易地尝试在一个操场。如果你从一个工作版本开始,也许你可以看到它和给你带来麻烦的区别。
class RetrieveDatabase {
var allMessages = [[String]]()
var messages = [String]()
var categorieNames = [String]()
init() {
messages.append("Hi")
messages.append("Hello")
allMessages.append(messages)
categorieNames.append("SALUTATIONS")
}
func loadGoogleValue() -> (allMessages: [[String]], categorieNames: [String]) {
return (self.allMessages, self.categorieNames)
}
}
class SettingsView {
let retrieveDatabase = RetrieveDatabase()
func caller() {
print(retrieveDatabase.loadGoogleValue().allMessages)
print(retrieveDatabase.loadGoogleValue().categorieNames)
}
}
let test = SettingsView().caller()
由于之间我做了什么,你在上面您的评论添加的代码相差无几的,我怀疑它的东西,你忽略了有关如何将字符串添加到阵列。
+0
谢谢。所以我发现了这个问题。 loadgooglevalue func与我的代码是异步的。它的工作原理与它使用来自Firebase的数据创建字符串一样,但函数不会等待它,只是返回空字符串。 即时编程很新,所以生病下午试图理解异步编程。今天的目标:做这项工作! 再次感谢和抱歉的喧嚣。 – felixmp
cmon guys?任何人? – felixmp
你为什么不声明像这样的'retrieveDatabase'变量? 'let retrieveDatabase = RetrieveDatabase()' –
感谢您的回复,字符串在调用时仍然是空的... – felixmp