Я создал простое расширение для 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)")
}
}
}