JSQCoreDataKit: использование необъявленного типа «SaveResult», несмотря на обнаружение определения типа при нажатии «Go до определения» - PullRequest
0 голосов
/ 05 августа 2020

Я использую фреймворк JSQCoreDataKit . Я успешно установил:

enter image description here

In one of the files, it is used as follows:

import JSQCoreDataKit

    func saveChanges(completion: @escaping (SaveResult) -> Swift.Void) {
        stack.mainContext.performAndWait {
            saveContext(self.stack.mainContext, wait: true, completion: { (result) in
                completion(result)
            })
        }
    }

That function definition throws these errors:

Use of undeclared type 'SaveResult'

When I right-click on SaveResult, and go to definition:
enter image description here It opens this file:
введите описание изображения здесь Итак, я нашел его определение:

extension NSManagedObjectContext {

    /// Describes a child managed object context.
    public typealias ChildContext = NSManagedObjectContext

    /// Describes the result type for saving a managed object context.
    public typealias SaveResult = Result<NSManagedObjectContext, Error> 
    //...

Так что я действительно не понимаю, почему я получаю эту ошибку, если Xcode может направить меня к ее определению.

1 Ответ

0 голосов
/ 05 августа 2020

typealias SaveResult входит в область действия NSManagedObjectContext, не определена глобально.

используйте NSManagedObjectContext.SaveResult вместо SaveResult.

Это нормально

func saveChanges(completion: @escaping (NSManagedObjectContext.SaveResult) -> Swift.Void) {
   
    }

Это тоже нормально,

в том же файле

public typealias SaveResult = Result<NSManagedObjectContext, Error>

extension NSManagedObjectContext {}
...