我有一个连接到我的firebase的ios应用程序,其中我有一个类,我已经定义了firebase-database的所有链接。
AppDelegate.swift包含一个public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<>();
for (int a = 0; a < 5; a++)
list.add(a);
removeRange_NEVER_DO_THIS(list, 2, 4);
System.out.println(list); // [0, 1, 4]
}
public static void removeRange_NEVER_DO_THIS(LinkedList<?> list, int from, int to) {
try {
Method node = LinkedList.class.getDeclaredMethod("node", int.class);
node.setAccessible(true);
Object low = node.invoke(list, from - 1);
Object hi = node.invoke(list, to);
Class<?> clazz = low.getClass();
Field nextNode = clazz.getDeclaredField("next");
Field prevNode = clazz.getDeclaredField("prev");
nextNode.setAccessible(true);
prevNode.setAccessible(true);
nextNode.set(low, hi);
prevNode.set(hi, low);
Field size = LinkedList.class.getDeclaredField("size");
size.setAccessible(true);
size.set(list, list.size() - to + from);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
方法,因此Firebase是第一个被初始化的方法。
init()
Firebase Dataservice,其中定义了所有数据库路径。
override init() {
super.init()
FirebaseApp.configure()
}
现在,一旦我启动应用程序,我就会收到错误
import Firebase
import FirebaseDatabase
let DB_URL: DatabaseReference = Database.database().reference()
let ST_URL: StorageReference = Storage.storage().reference()
let uid = Auth.auth().currentUser?.uid
class FBDataservice {
//... other code
}
此错误是在dataservice类中的uid定义上进行的。
现在,据我所知,这是因为即使没有用户也可以初始化uid。
我没有关于如何实现这一点的想法。我在整个项目中都有很多对uid的引用。什么是最合适的方式。
由于
答案 0 :(得分:3)
您可能想要使用observeAuthEventWithBlock
。
要侦听身份验证状态的更改,请附加事件 观察者使用observeAuthEventWithBlock。如果当前没有用户 经过身份验证,authData将为零。
根据reference:
,您可以像这样实现它let ref = Firebase(url: "https://<YOUR-FIREBASE-APP>.firebaseio.com")
ref.observeAuthEventWithBlock({ authData in
if authData != nil {
// user authenticated
println(authData)
} else {
// No user is signed in
}
})
答案 1 :(得分:0)
我不太确定您在初始化代码的位置。 可能的解决方案:
使用保护声明guard let userID = Auth.auth().currentUser?.uid else {return}
尝试将此代码放入将返回可选字符串的函数中。
if Auth.auth().currentUser?.uid != nil
pod update
FirebaseApp.configure()
并返回true。