データベース内の子にアクセスしようとしていますが、前のビューの文字列をsegueで取得しています。それは悪い命令のエラーを与え続けます。シミュレータで実行した後にのみ表示されます。私たちはエラーの解決を求めています。ありがとう!文字列を持つ前のビューからswiftのfirebaseから子を呼び出すときに不正な命令エラーが発生しました2
機能:firebaseにデータにアクセスし、アップロードする
}
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let controller = segue.destinationViewController as! SorDViewController
if segue.identifier == "secondScreen" {
controller.textToDisplay = nameField.text
}
}
コードは(エラーは、最初の関数に表示されます):
import Foundation
import UIKit
import Firebase
import FirebaseDatabase
class SorDViewController: UIViewController {
var textToDisplay: String?
@IBAction func postData(sender: AnyObject) {
let ref = FIRDatabase.database().referenceFromURL("database URL")
ref.child(textToDisplay!).child("Type").setValue("Singles")
}
@IBAction func postData2(sender: AnyObject) {
let ref = FIRDatabase.database().referenceFromURL("database URL")
ref.child("Type").setValue("Doubles")
}
}
をよろしいです'textToDisplay'はnilではありませんか? –
それを指摘した後、それはゼロとして出ています。ありがとうございました。私たちはこれをどう変えることができるか知っていますか? –
'nameField'にテキストがありますか?その場合、その値が適切に保存されていない理由を調べる必要があります。いずれにしても、データベースコールを 'if let textToDisplay = textToDisplay'またはnil値に対してガードするのと同様のものにラップしたいと思うでしょう。そして、一般的には、@ IBObject以外のものを強制的に/暗黙的にアンラップすることには非常に慎重になるでしょう。もしそれが無ければクラッシュする可能性があり、それが無限にならないとすれば、最初に、変数を非オプションにする方法があるかどうかを確認する必要があります。 –