swift – MailCore2 Crashes on actual units iOS

0
17
swift – MailCore2 Crashes on actual units iOS


I’m engaged on an e mail app utilizing MailCore2 bundle. It really works superb on simulator nevertheless it crashes on actual units. I’m sharing my code as nicely, please look into and assist me out as I’m caught on this.

non-public let session: MCOIMAPSession

func fetchEmailsFromServer(folder: String, completion: @escaping (Outcome<[EmailEntity], Error>) -> Void) {
    // Verify if fetching is already in progress
    guard !isFetching else {
        completion(.failure(NSError(area: "IMAPService", code: -1, userInfo: [NSLocalizedDescriptionKey: "Fetch already in progress"])))
        return
    }
    
    isFetching = true
    print("Fetching emails from folder: (folder), isFetching: (isFetching)")
    
    let nextUID = nextEmailUIDs[folder] ?? 1
    print("it comes right here")
    
    guard nextUID > 0 else {
        print("Invalid nextUID: (nextUID)")
        completion(.failure(NSError(area: "IMAPService", code: -4, userInfo: [NSLocalizedDescriptionKey: "Invalid UID range"])))
        return
    }
    print("it comes right here too (nextUID)")
    

    let requestKind: MCOIMAPMessagesRequestKind = [.headers, .structure, .internalDate, .fullHeaders]
    guard let vary = MCOIndexSet(vary: MCORange(location: nextUID, size: 100)) else {return}
    print("request type:  (requestKind)")
    print("request vary:  (vary)")


    // Use session instantly since it's non-optional
    guard let fetchOperation = session.fetchMessagesOperation(withFolder: folder, requestKind: requestKind, uids: vary) else {
        print("error fetching")
        return
    }
    print("request fetchOperation:  (fetchOperation.debugDescription)")
    


    fetchOperation.begin { error, messages, _ in
        
        
        self.isFetching = false
        print("Fetching emails accomplished for folder: (folder), isFetching: (self.isFetching)")
        print("it comes right here")

        if let error = error {
            print("Fetch operation error: (error.localizedDescription)")
            completion(.failure(error))
            return
        }
        
        guard let messages = messages else {
            print("No messages fetched.")
            completion(.failure(NSError(area: "IMAPService", code: -2, userInfo: [NSLocalizedDescriptionKey: "Failed to parse messages"])))
            return
        }
        
        var emails: [EmailEntity] = []
        let group = DispatchGroup()
        
        for message in messages {
            group.enter()
            self.fetchEmailDetails(for: message, folder: folder) { lead to
                if case .success(let e mail) = outcome {
                    emails.append(contentsOf: e mail.emails)
                }
                group.depart()
            }
        }
        
        group.notify(queue: .primary) {
            if let lastMessage = messages.final {
                self.nextEmailUIDs[folder] = UInt64(lastMessage.uid + 1)
            }
            if emails.isEmpty {
                print("No emails parsed efficiently.")
                completion(.failure(NSError(area: "IMAPService", code: -6, userInfo: [NSLocalizedDescriptionKey: "No emails fetched"])))
            } else {
                completion(.success(emails))
            }
        }
    }
}

It really works completely on simulator nevertheless it crashes on actual units.

What i’m assuming is MCOIMAPSession is inflicting that crash on actual gadget.

LEAVE A REPLY

Please enter your comment!
Please enter your name here