Mailcore2 stürzt auf echten Geräten iOS abIOS

Programmierung für iOS
Anonymous
 Mailcore2 stürzt auf echten Geräten iOS ab

Post by Anonymous »

Ich arbeite an einer E -Mail -App mit dem MailCore2 -Paket. Es funktioniert gut für Simulator , aber es stürzt auf Real Devices ab. Ich teile auch meinen Code, bitte schauen Sie und helfe mir, während ich in diesem Sinne stecke. < /P>

Code: Select all

private let session: MCOIMAPSession

func fetchEmailsFromServer(folder: String, completion: @escaping (Result) -> Void) {
// Check if fetching is already in progress
guard !isFetching else {
completion(.failure(NSError(domain: "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 here")

guard nextUID > 0 else {
print("Invalid nextUID: \(nextUID)")
completion(.failure(NSError(domain: "IMAPService", code: -4, userInfo: [NSLocalizedDescriptionKey: "Invalid UID range"])))
return
}
print("it comes here too \(nextUID)")

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

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

fetchOperation.start { error, messages, _ in

self.isFetching = false
print("Fetching emails completed for folder: \(folder), isFetching: \(self.isFetching)")
print("it comes 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(domain: "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) { result in
if case .success(let email) = result {
emails.append(contentsOf: email.emails)
}
group.leave()
}
}

group.notify(queue: .main) {
if let lastMessage = messages.last {
self.nextEmailUIDs[folder] = UInt64(lastMessage.uid + 1)
}
if emails.isEmpty {
print("No emails parsed successfully.")
completion(.failure(NSError(domain: "IMAPService", code: -6, userInfo: [NSLocalizedDescriptionKey: "No emails fetched"])))
} else {
completion(.success(emails))
}
}
}
}
Es funktioniert perfekt für Simulator, aber es stürzt auf realen Geräten ab. /> < /p>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post