Расширения swift 4 Невозможно передать неизменяемое значение в качестве аргумента inout: сообщение об ошибке «self» is immutable » - PullRequest
0 голосов
/ 25 апреля 2018

Я создал простое расширение для UIViewController, но когда я вызываю метод внутри, даже применяя ключевое слово inout, я получаю сообщение об ошибке «Невозможно передать неизменяемое значение в качестве аргумента inout:« self »is immutable».Как можно разрешить это?

в моем VC У меня есть эта переменная

var asyncComicEntityArray : [NSManagedObject]! = []

в моей кнопке Я реализовал расширение таким образом

searchIfOwnedInExtension(asynchArrayToUse: &asyncComicEntityArray, showWhereOwnedIs: true)

и вот расширение вотдельный файл swift

EXTENSION 
import Foundation
import UIKit
import CoreData




extension UIViewController {



    //needs a     var asyncComicEntityArray : [NSManagedObject]! = []

    func searchIfOwnedInExtension(asynchArrayToUse: inout [NSManagedObject], showWhereOwnedIs: Bool) {

        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {return}
        let managedContext = appDelegate.persistentContainer.viewContext



        let comicFetch : NSFetchRequest<Comic> = Comic.fetchRequest()
        let predicateForRequest = NSPredicate(format: "inCollection == %@", NSNumber(booleanLiteral: showWhereOwnedIs))
        comicFetch.predicate = predicateForRequest


        do {
            asynchArrayToUse = try managedContext.fetch(comicFetch)
        } catch let error as NSError {
            print("Fetch error: \(error) description: \(error.userInfo)")
        }

        guard asynchArrayToUse != nil else {return}
        for comic in asynchArrayToUse {
            var comicTouse = Comic()
            comicTouse = comic as! Comic
            print("comic title: \(comicTouse.comicTitle!), is it in collection? : \(comicTouse.inCollection)")
        }



    }





}
...