从Xcode 11更新为12后的应用程序委托/场景委托和Firebase问题

时间:2020-10-05 05:11:34

标签: firebase swiftui xcode12

所以我一直在构建我的第一个应用程序,最近我更新到Xcode 12时,发生了多个问题...

我注意到不再有应用程序和场景委托文件,但我的项目仍在使用它。想知道如何清理而不将所有内容复制并粘贴到新项目中。

我也有多个警告说:

“ iOS模拟器部署目标'IPHONEOS_DEPLOYMENT_TARGET'设置为8.0,但是支持的部署目标版本范围是9.0至14.0.99。”

我目前的部署目标是iOS13。如果将其更改为9,则URLIMAGE模块会出现一个错误,因为它的最小值为11。当将其更改为11时,我将存在999多个错误...

以下示例: enter image description here

我不知道要放什么!

我还与URLImage一起看到,我的Firebase无法正常工作,并且大部分UI都消失了。 我正在运行一个instagram教程,我的“主页”提要现在为空。我的故事供稿文件仍然可以正常工作,不确定是否与firebase或URLImage有关?

enter image description here

我玩过这个视图,并在故事滚动视图的下面添加了一个矩形,它已经出现了,所以我怀疑它与Firebase有关。

当前代码:

import SwiftUI
import URLImage
import Firebase

struct HomeView: View {
    
    @ObservedObject var homeViewModel = HomeViewModel()
    
    var body: some View {
        NavigationView {
            
            ScrollView(.vertical, showsIndicators: false) {
                
                Story()
                Rectangle().frame(width: 200, height: 200).foregroundColor(.red)
                if !homeViewModel.isLoading {
                    ForEach(self.homeViewModel.posts, id: \.postId) { post in
                        VStack(alignment: .center) {
                            
                            HeaderCell(post: post)
                            FooterCell(post: post)
                            
                            }.background(Color.white).cornerRadius(10)
                            .padding(.leading, 10).padding(.trailing, 10)
                    }
                    
                }
                }

这是我的HomeViewModel:

import Foundation
import SwiftUI
import Firebase

class HomeViewModel: ObservableObject {
    @Published var posts: [Post] = []
    @Published var isLoading = false
    
    var listener: ListenerRegistration!
    
//    init() {
//        loadTimeline()
//    }
    
    func loadTimeline() {
        self.posts = []
        isLoading = true
        
        Api.Post.loadTimeline(onSuccess: { (posts) in
            self.isLoading = false

            if self.posts.isEmpty {
                self.posts = posts
            }
        }, newPost: { (post) in
            if !self.posts.isEmpty {
                self.posts.insert(post, at: 0)
            }
        }) { (listener) in
            self.listener = listener
        }

    }
}

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

在看不到您的代码的情况下,很难说出所见问题的确切原因是什么。但是,要回答您的一些问题:

  1. 您仍然可以使用旧的方式设置应用程序(使用AppDelegateSceneDelegate。有关更多详细信息,请参见我的回答here
  2. 您可以放心地忽略警告。如果这让您感到困扰,请查看this answer,以找到与Pod的部署目标相匹配的方法。

关于您的UI消失的原因,如果可以在日志输出中提供几个相关的代码片段和几行内容,将很有用。另外,请确保检查您的安全规则设置是否正确。