我有一个简单的功能从Firebase加载数据.
func loadFromFireBase() -> Array<Song>? {
var songArray:Array<Song> = []
ref.observe(.value, with: { snapshot in
//Load songArray
})
if songArray.isEmpty {
return nil
}
return songArray
}
Run Code Online (Sandbox Code Playgroud)
目前nil,即使有要加载的数据,此函数也会始终返回.它这样做是因为它不会在函数返回之前执行完成块,它会加载数组.我正在寻找一种方法,只有在调用完成块后才能返回该函数,但我无法在完成块中返回.
ios firebase completionhandler swift firebase-realtime-database
在我刚刚读到的一篇博客文章中:
'Swift 允许我们从 NSObject 扩展类以获得对象的 Objective-C 运行时功能。它还允许我们使用 @objc 注释 Swift 方法,以允许 Objective-C 运行时使用这些方法。
我不明白 Objective-C 运行时特性这个术语。这是否意味着该代码也可以在 Objective-C 项目中使用?
我问是因为这是 android studio 的一个功能,并且想知道 xcode 或外部事物是否有类似的东西?
我的目标是在swift中有一个空数组.像这样的东西:
[[][][][][]]
Run Code Online (Sandbox Code Playgroud)
他们都是游戏类型.这是我的尝试:
let numberOfDays = 5
var gamesCache: [[Game]] = [](count: numberOfDays, repeatedValue: [])
Run Code Online (Sandbox Code Playgroud)
它出现了错误.不能调用非函数类型'[Any]'的值
我有一个非常令人沮丧的错误.我进入iOS开发已有3个月了.我一直在登录Facebook,然后连接到Firebase.我在一开始就实现了这一点.它工作得很好,今天我醒来把应用程序放在商店......并且Facebook登录不起作用.
我登录Facebook的代码绝对没有任何改变(我几乎可以肯定,但我已经检查了一切!)你会点击facebook登录按钮,它将只是白色(通常会有互联网)浏览器).我得到的错误是:
[ViewService] Failed to get remote view controller with error: Error: domain=_UIViewServiceInterfaceErrorDomain, code=2
Run Code Online (Sandbox Code Playgroud)
我完全改变了代码.我的bundleID和appID与facebook开发者中的相同.
我完全不知道它是什么,只有极少数有类似问题的人似乎也没有.我想了解,但只是能够解决它并且未来不会发生真的很棒!我在swift编码,但我没有像在Facebook文档中那样使用swiftSDK,而是使用FBSDKLoginButton.
此外,我在模拟器上尝试了这一点,它不会发生.它只发生在我的手机上.
我真的不确定什么是有用的信息,所以如果我包含一些不相关的内容,我很抱歉.
我正在使用facebook sdk 4.20.2
这是我的info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>CeleBreak</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb1253394891414659</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>FacebookAppID</key>
<string>1253394891414659</string>
<key>FacebookDisplayName</key>
<string>CelebreakApp</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbauth2</string>
</array>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSExceptionDomains</key>
<dict/>
</dict>
<key>UILaunchStoryboardName</key> …Run Code Online (Sandbox Code Playgroud) 当我尝试部署函数时,出现错误:“无法检索函数源代码”。
这一切都来自命令行。我正在使用节点 6.11.5(但在节点文件夹中的 firebase-admin package.json 文件中,它说节点 6.9.1 用于下载它)。我正在使用 firebase-admin@5.8.1 和 firebase-functions@0.8.1。
这是我尝试部署的 index.js 文件中的代码:
const functions = require('firebase-functions');
exports.helloWorld = functions.https.onRequest((request, response) => {
response.send("Hello from Firebase!");
});
Run Code Online (Sandbox Code Playgroud)
我还尝试部署许多不同的东西。
两件有趣的事情: - 我曾经能够毫无问题地部署任何功能。这大约在一个月前发生了变化,现在我尝试的每个函数都会出现此错误。我不记得做了任何与此相关的更改。- 此外,我可以将我的计算机中的功能(具有完全相同的设置和 firebase 版本)部署到同一谷歌帐户和不同谷歌帐户中的其他项目,没有任何问题。
谢谢
我在项目中使用单例,但是一直在stackOverflow上阅读,这很糟糕。
我有一个应用程序,它在应用程序委托中获取currentUser信息。我需要在整个应用程序中访问此信息,除了让单例存储currentUser然后访问它以外,还有什么方法?
我还为firebaseController(用于从Firebase解析数据的视图控制器,在整个应用程序中再次使用)使用了singleton。这是个好主意还是更好的选择?