私のタイトルよりも明確にすることができたらうれしいです。私はFirebaseServiceクラスを作成しました。ここでは、データの保存と取得のためのすべてのメソッドを作成します。私は他のどのクラスでもfirebaseのリファレンスを作る必要はありません。私は単にこのクラスを参照してそのことを行いたいだけです。これが不可能な場合は、私に知らせてください。私はそれを前に進めません。以下は私のFirebaseServiceクラスが...あるFirebaseデータサービスクラスのchildByAutoId値を別のクラスで取得するように設定する
私はFirebaseServiceクラスからid
を取得できるようにしたいと私はポストを保存するとき、それは実際にchildByAutoIdの値(Firebaseでポストのランダムに生成されたID)を使用してい
import UIKit
import Firebase
class FirebaseService: NSObject {
let ref = FIRDatabase.database().reference()
var id = String()
func savePost(post:[String:AnyObject]) {
let postRef = ref.child("posts").childByAutoId()
id = postRef.key
postRef.setValue(post)
}
}
だから私はそれをidというポストの値として保存することができます。しかし、今私がそれを保存するとき、私は全体としてポストのために生成された意図されたランダムなIDを取得しますが、私は "ID"キーでその値を取得しません。
func postPost() {
post.id = FirebaseService().id
post.textContent = textView.text
post.name = "Michael Williams"
post.profileImageName = "cool"
post.imageContentName = "coffee"
post.createdDate = convertCurrentTimeToString()
let postArray:[String:AnyObject] = ["name":post.name!, "profileImageName":post.profileImageName!, "textContent":post.textContent!, "imageContentName":post.imageContentName!, "createdDate":post.createdDate!, "id":post.id!]
dismissViewControllerAnimated(true) {
FirebaseService().savePost(postArray)
}
}
Firebaseデータベーススキーム:上記と同じランダムに生成されたID:
記事 "ランダムに生成されたIDを"
名: "ジョン・ドウ"
ID
postText:私は
postPost()
機能を実行すると、 "何とか何とか"
一般的な経験則では、閉鎖内で「自己」を使用する必要があります。だからself.id = postRef.key – Jay
また、私はここでのロジックは(確実に)動作しないと思う。 postPost()を呼び出すと、post.id = FirebaseService.idが割り当てられますが、実際のsavePostが呼び出される前に*そのIDを生成します。また、なぜあなたは、あなたが今使ったのと同じ値を使って配列に詰め込んだ投稿をするのですか?どうしてですか?["名前": "マイケルウィリアムズ、" profileImageName ":"クール "など – Jay
あなたの質問に答える:はい、あなたは他のクラスの関数を呼び出すことができます。 Constants.swiftという名前のファイルを作成することを推奨し、そのファイルにシングルトンのような関数や構造体などを保持してください。あなたのケースでは、id変数には関心がありますが、あなたの質問からあなたが何をしたいのかは不明です。 – Jay