程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了除了 FetchedData 之外,CoreData FetchRequest 正在加载带有可选结果数据的列表大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决除了 FetchedData 之外,CoreData Fetchrequest 正在加载带有可选结果数据的列表?

开发过程中遇到除了 FetchedData 之外,CoreData Fetchrequest 正在加载带有可选结果数据的列表的问题如何解决?下面主要结合日常开发的经验,给出你关于除了 FetchedData 之外,CoreData Fetchrequest 正在加载带有可选结果数据的列表的解决方法建议,希望对你解决除了 FetchedData 之外,CoreData Fetchrequest 正在加载带有可选结果数据的列表有所启发或帮助;

我正在 adminVIEw 结构中调用 @Fetchrequest,我希望在其中使用 ForEach 显示列表中的数据。我正在请求所有用户实体数据,但是当我运行应用程序时,列表显示了我的 2 个现有条目结果,但它还显示了大约 40 个条目,由于某种原因默认为可选字符串“TEST”。

我想了解如何让列表只显示两个用户条目而不显示列表中的默认字符串。

非常感谢!

相关代码如下:

import Foundation
import CoreData


extension User {

    @nonobjc public class func fetchrequest() -> NSFetchrequest<User> {
        return NSFetchrequest<User>(entityname: "User")
    }

    @Nsmanaged public var admin: Bool
    @Nsmanaged public var company: String?
    @Nsmanaged public var name: String?
    @Nsmanaged public var password: String?
    @Nsmanaged public var photo: Data?
    @Nsmanaged public var username: String?
    @Nsmanaged public var ID: UUID?
    @Nsmanaged public var tickets: NSSet?

}

// MARK: Generated accessors for tickets
extension User {

    @objc(addTicketsObject:)
    @Nsmanaged public func addToTickets(_ value: Ticket)

    @objc(removeTicketsObject:)
    @Nsmanaged public func removeFromTickets(_ value: Ticket)

    @objc(addTickets:)
    @Nsmanaged public func addToTickets(_ values: NSSet)

    @objc(removeTickets:)
    @Nsmanaged public func removeFromTickets(_ values: NSSet)

}

extension User : IDentifiable {

}

extension User {
    static func getAllUsers() -> NSFetchrequest<User> {
        let request:NSFetchrequest<User> = User.fetchrequest()

        let sortDescriptor = NSSortDescriptor(keyPath: \User.company,ascending: falsE)
        request.sortDescriptors = [sortDescriptor]

        return request
    }
}





import SwiftUI

struct adminVIEw: VIEw {
    @Environment(\.managedobjectContext) var moc
    @EnvironmentObject var goToContentVIEw: movetoContentVIEw
    @Observedobject var SELEctedUser : User
    @State var SELEctedImageArray : [UIImage]
    
    @Fetchrequest(fetchrequest: User.getAllUsers()) var allUsers:FetchedResults<User>

    var body: some VIEw {
        List{
            ForEach(self.allUsers) { user in
                vstack{
                    Text(user.company ?? "TEST")
                }
            }
     }
        .toolbar(content: {
            Editbutton()
        })
        .animation(.default)
        .navigationbarBACkbuttonHIDden(true)
        .navigationtitle("admin")
        .navigationbarItems(leading: button(action: {
            
            if self.goToContentVIEw.goToVIEwFromLogin == true {
                self.goToContentVIEw.goToVIEwFromLogin = false
            } else {
                self.goToContentVIEw.goToVIEwFromregister = false
            }
            
        }) {
            HStack {
                Text("Sign Out")
            }
        },Trailing: HStack{
            Image(systemname: "bell")
                .Font(.system(size: 30))
            Image(uiImage: SELEctedImageArray.first!)
                .resizable()
                .scaledToFit()
                .clipShape(Circle())
                .frame(wIDth: 50,height: 50)
            Text(SELEctedUser.name!)
                .Font(.system(size: 20))
        })
        
    }
}

解决方法

向列表添加过滤器。您还可以使用 let 代替 nil-coalescing 运算符。不需要 VStack,因为文本都在列表中。

List {
   ForEach(self.allUsers.filter({ $0.company != nil })) { user in
      if let company = user.company {
          Text(company)
      }
   }
}

大佬总结

以上是大佬教程为你收集整理的除了 FetchedData 之外,CoreData FetchRequest 正在加载带有可选结果数据的列表全部内容,希望文章能够帮你解决除了 FetchedData 之外,CoreData FetchRequest 正在加载带有可选结果数据的列表所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。