я управляемый объект, определенный:Как передать NSManagedObject через протокол/делегат?
@objc (Game)
class Game: NSManagedObject {
@NSManaged var player1: Player
@NSManaged var player2: Player
@NSManaged var totalScore: NSNumber
@NSManaged var gameDate: NSDate
}
я инициализировать его от ViewControllerA, потом отдать его ViewControllerB используя шаблон делегата. Протокол выглядит следующим образом:
protocol gameProtocol {
func gameFunction(input: Game)
}
ViewControllerB признаки для протокола:
class ViewControllerB: UIViewController, gameProtocol {...}
и реализует эту функцию, чтобы соответствовать:
func gameFunction(input: Game) {
let currentGame = input
}
Затем ViewControllerA может отправить объект игры в VCB следующим образом:
var gameDelegate: gameProtocol!
gameDelegate.gameFunction(myInitializedAndSavedGameObject)
Все это работает, но мне нужно переменную уровня класса внутри ViewControllerB, чтобы можно было записать другой код в зависимости от игры. Это, конечно, не работает:
var currentGame = Game()
func gameFunction(input: Game) {
currentGame = input
}
Я не знаю, правильные слова для него, но я думаю, что я хочу инициализацию, пустой объект игры. Полагаю, я мог бы написать удобную инициализацию, которая делает временную игру, но это не похоже на хорошую идею.
Мое текущее обходное решение - иметь NSManagedObjectID(), а затем воссоздать объект из идентификатора. Но это много повторяющегося кода, чтобы получить объект, который является центральным для того, с чем этот ViewController предназначен для работы.
Почему у вас нет переменной экземпляра? – Wain
Потому что я не знаю, что это (любитель-самоучка). Но ваше предложение побудило меня обнаружить «ленивый var currentGame = Game()», который, похоже, я хочу. Делая var lazy, назначенный инициализатор никогда не называется неправильно. Я уверен, что первое, что нужно коснуться var, будет методом gameFunction, поэтому мой другой код будет компилироваться без сбоев. Благодаря! – wellspokenman