Могу ли я иметь класс «Личность», который имеет переменную «bestFriend», которая имеет тип «Лицо»? Если да, то как я могу предотвратить сильный опорный цикл возникновения? Я могу объявить переменную нормально, но я получаю сообщение об ошибке, когда я пытаюсь объявить как слабый или неактивный.Может ли класс содержать ссылочную переменную самому себе?
class Person: NSManagedObject {
@NSManaged var name:String?
@NSManaged var age:Int?
@NSManaged var bestFriend:Person?
}
Если я пытаюсь объявить переменную как так:
@NSManaged weak var bestFriend:Person? //This generates an error
или
@NSManaged unowned var bestFriend:Person? //This generates an error
ошибка - "свойство 'BestFriend' отмечен слабым по классу человек не может. сгенерируйте для него метод setter. "
Update
Класс теперь подкласс NSManagedObject так что я могу хранить его с помощью CoreData. Я немного изменил свой код, чтобы отразить это. Та же проблема сохраняется. Как я могу предотвратить сильный опорный цикл? Я не могу объявить переменную «bestFriend» как «слабую» или «незаслуженную», не создавая ошибку, указанную выше.
Действительно ли ваш вопрос о наличии ссылки на тот же тип, что и сам или тот же объект, что и сам? Предположительно, у вас не было бы самого лучшего друга (или вы бы)? В этом случае ваш вопрос заключается в наличии переменной, которая имеет тот же * тип *, а не переменную того же * экземпляра * (поскольку человек и их лучший друг не являются одним и тем же объектом). В любом случае, вы можете это сделать, но, похоже, вы можете вводить в заблуждение типы (классы) с экземплярами этих типов? – Gruntcakes
@sausageMachine yes Я хочу иметь переменную того же типа, а не одного человека. – user3353890
@matt код причины ошибки находится выше. он падает в объявлении класса, где я объявляю переменную bestFriend, если пытаюсь объявить ее как «слабый var» или «unowned var» – user3353890