Excel成功匯入firebase步驟:
1.先將excel中從網路上載下來的資料(各種不同編碼格式)複製貼到記事本再貼回excel欄位,把隔式洗成big5/unicode編碼(txt檔要先存檔指定格式)
2.把處理好的excel檔貼到https://codebeautify.org/excel-to-json 轉成json格式(注意如有","符號需拿掉,不然會造成轉換格式錯誤)
3.把json資料用複製方式貼到notepad++,另存新檔(所有檔案,檔名 XXX.json)
4.之後再把notepad++存好的json檔匯入到firebase中即可
Firebase
主要分成三種資料存取方式
-Auth(授權):存放登入授權方式的資料,含email、FB、Gooel等方式
-Database(資料):存放文字相關的資料,以JSON的方式儲存(No-SQL)
-Storage(儲存):存放照片、影片、音樂等影音檔資料(以二進位方式儲存)
記得在Firebase後臺設定時要把資料庫存取權限開啟才不會遇到無法讀寫的狀況
(Database->規則->false改成true)
一般需要透過授權登入的方式後才能存取資料庫資料
AppDelegate.swift檔中須import Firebase,並輸入FirebaseApp.configure()
登入頁面swift檔
讀寫資料頁面swift檔
/*---------Firebase刪除節點資料------*/
Firebase資料匯入注意!
-只能餵JSON檔,對於key跟value值有嚴格規範,編碼錯誤就餵不進去,所以如果用excel轉json在餵進去很容易有錯誤發生(尤其是從網路上直接複製資料貼在excel中)
參考資料
1.先將excel中從網路上載下來的資料(各種不同編碼格式)複製貼到記事本再貼回excel欄位,把隔式洗成big5/unicode編碼(txt檔要先存檔指定格式)
2.把處理好的excel檔貼到https://codebeautify.org/excel-to-json 轉成json格式(注意如有","符號需拿掉,不然會造成轉換格式錯誤)
3.把json資料用複製方式貼到notepad++,另存新檔(所有檔案,檔名 XXX.json)
4.之後再把notepad++存好的json檔匯入到firebase中即可
Firebase
主要分成三種資料存取方式
-Auth(授權):存放登入授權方式的資料,含email、FB、Gooel等方式
-Database(資料):存放文字相關的資料,以JSON的方式儲存(No-SQL)
-Storage(儲存):存放照片、影片、音樂等影音檔資料(以二進位方式儲存)
記得在Firebase後臺設定時要把資料庫存取權限開啟才不會遇到無法讀寫的狀況
(Database->規則->false改成true)
一般需要透過授權登入的方式後才能存取資料庫資料
AppDelegate.swift檔中須import Firebase,並輸入FirebaseApp.configure()
登入頁面swift檔
import UIKit
import Firebase
import FirebaseAuth
class SignUpViewController: UIViewController {
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet var passwordTextField: UITextField!
@IBAction func loginbutton(_ sender: Any) {
if self.emailTextField.text == "" || self.passwordTextField.text == "" {
//self.showMsg("請輸入email和密碼")
return
}
Auth.auth().signIn(withEmail: self.emailTextField.text!, password: self.passwordTextField.text!) { (user, error) in
// 登入失敗
if error != nil {
//self.showMsg((error?.localizedDescription)!)
return
}
// 登入成功並顯示已登入
//self.showMsg("登入成功")
}
}
@IBAction func creatAccountAction(_ sender: Any) {
if emailTextField.text == "" {
let alertController = UIAlertController(title: "Error", message: "Please enter your email and password", preferredStyle: .alert)
let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
alertController.addAction(defaultAction)
present(alertController, animated: true, completion: nil)
} else {
Auth.auth().createUser(withEmail: emailTextField.text!, password: passwordTextField.text!) { (user, error) in
if error == nil {
print("You have successfully signed up")
//Goes to the Setup page which lets the user take a photo for their profile picture and also chose a username
//註冊後跳到指定頁面
let vc = self.storyboard?.instantiateViewController(withIdentifier: "page")
self.present(vc!, animated: true, completion: nil)
//
} else {
let alertController = UIAlertController(title: "Error", message: error?.localizedDescription, preferredStyle: .alert)
let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
alertController.addAction(defaultAction)
self.present(alertController, animated: true, completion: nil)
}
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
讀寫資料頁面swift檔
override func viewDidLoad() {
super.viewDidLoad()
/*--------Firebase新增資料設定------*/
let reference: DatabaseReference! = Database.database().reference().child("EATWHAT")
// 新增節點資料
var EATWHAT: [String : AnyObject] = [String : AnyObject]()
EATWHAT["formatted_address"] = "台北市" as AnyObject
EATWHAT["formatted_phone_number"] = "02 28825888" as AnyObject
EATWHAT["name"] = "全家就是你家" as AnyObject
EATWHAT["price_level"] = "10" as AnyObject
EATWHAT["rating"] = "5.0" as AnyObject
EATWHAT["url"] = "http://" as AnyObject
EATWHAT["vicinity"] = "中山區" as AnyObject
EATWHAT["website"] = "http://" as AnyObject
//let childRef = reference.childByAutoId() // 隨機生成的節點唯一識別碼,用來當儲存時的key值
// let EATWHATReference = reference.child(childRef.key)
//設定新資料的識別碼(在資料庫中的title)
let childRef = "150"
let EATWHATReference = reference.child(childRef)
EATWHATReference.updateChildValues(EATWHAT) { (err, ref) in
if err != nil{
print("err: \(err!)")
return
}
print(ref.description())
/*--------Firebase新增資料設定------*/
/*--------- Firebase查詢節點資料------*/
Database.database().reference().child("EATWHAT").observe(.childAdded, with: {
(snapshot) in
// childAdded逐筆呈現
if let dictionaryData = snapshot.value as? [String: AnyObject]{
print(dictionaryData)
print(snapshot.key)
}
}, withCancel: nil)
/*---------Firebase查詢節點資料------*/
/*---------Firebase刪除節點資料------*/
//指定刪除child為149的資料
Database.database().reference().child("EATWHAT").child("149").removeValue { (error, ref) in
if error != nil{
print(error!)
return
}
print("remove data success...")
}
/*---------Firebase刪除節點資料------*/
// Do any additional setup after loading the view.
}
Firebase資料匯入注意!
-只能餵JSON檔,對於key跟value值有嚴格規範,編碼錯誤就餵不進去,所以如果用excel轉json在餵進去很容易有錯誤發生(尤其是從網路上直接複製資料貼在excel中)
參考資料
留言
張貼留言