观察更新到 xcode 10.2.1 后数据库功能不起作用
Posted
技术标签:
【中文标题】观察更新到 xcode 10.2.1 后数据库功能不起作用【英文标题】:Observe database functions not working after updating to xcode 10.2.1 【发布时间】:2019-05-29 12:05:54 【问题描述】:我的 ios 应用程序一直在工作,直到我更新到最新的 Xcode (10.2.1) 并使用“pod update”更新了 pod。我之前使用的是 Xcode 9.4.1 和 swift 3。我进行了更新,因为我无法使用该版本的 Xcode 上传到应用商店。
其余功能工作正常(包括 firebase 电话身份验证),但从未触发所有“观察”firebase 数据库功能。它构建成功并且没有显示错误。
我试过没有成功:
-从 firebase 下载 plist 文件。
-将数据库规则设置为 true 以进行读写。
-将部署目标设置为 11.0 和 podFile 平台:ios, '11.0'
pod 文件:
platform :ios, '12.0'
target 'appname' do
use_frameworks!
pod 'Firebase/Database'
pod 'Firebase/Auth'
pod 'Firebase/Storage'
pod 'SwiftyStoreKit'
pod 'Onboard'
pod 'SDWebImage'
pod 'IQKeyboardManagerSwift'
end
在 AppDelegate 中初始化的 Firebase - didFinishLaunchingWithOptions:
FirebaseApp.configure()
在此之前一切都按预期进行:
Auth.auth().signIn(with: credential) (user,error) in
if error != nil
print(error)
else
print(phone number: \(String(describing: user?.user.phoneNumber))")//this is successfully printed
let userInfo = user?.user.providerData[0]
print(Provider ID: \(String(describing: userInfo?.providerID))")//this is successfully printed
if let user = Auth.auth().currentUser
let uid = user.uid
let ref = Database.database().reference()
ref.child("users").observeSingleEvent(of: .value, with: (snapshot) in
if snapshot.hasChild(uid)
print("user already exists")//this never gets printed
else
let values: [String: AnyObject] = ["phoneNumber": user.phoneNumber as AnyObject]
let userRef = ref.child("users").child(uid)
userRef.updateChildValues(values, withCompletionBlock: (err,ref) in//user never gets created in database but it is created in firebase
if err != nil
print(err)
return
)
let tabBarController = CustomTabBarController()//this never gets executed
present(tabBarController, animated: true)
)
【问题讨论】:
回答这个问题真的很难,因为这个问题可能涉及很多方面;从应用程序和 Firebase 的设置方式到身份验证问题再到规则。甚至可能是互联网问题。我正在运行 XCode 10.2.1、Firebase 6.0.0,我的应用程序刚刚构建并成功运行。我们可以看看您的 podFile,以及您是如何初始化 Firebase 的吗? 我编辑了答案,这是正确的信息吗?我认为这不是互联网问题,当我加载旧版本的应用程序时,它可以工作,与连接到同一个 firebase 项目的另一个应用程序相同。我正在 iPhone 6 (iOS 12.3) 上进行测试。 podfile 和初始化看起来都正确。所以你有两个版本的应用程序,旧的可以工作,新的不能。您是否在 Firebase 控制台中将新应用添加到项目并下载了 that 应用的更新 plist?每个单独的应用都需要有自己的 plist。 我有 2 个应用程序,是的,1 个在我更新之前工作,但在更新后不工作,另一个在之前和之后工作。是的,它们都已添加到 firebase 项目中。 仍然可以运行的应用我没有更新 pod 或任何东西,因为我在应用商店中不需要它。 【参考方案1】:问题是 cocoapods 版本,我有 1.5.3。一旦我更新到 1.7.2,一切都会按预期工作。
【讨论】:
以上是关于观察更新到 xcode 10.2.1 后数据库功能不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 10 签名错误:Frameworks/libswiftsimd.dylib:代码对象根本没有签名
xCode 8 会自动更新 NSManagedObject,是吗?