В Objective C я могу задать вопрос isEqual и не задавать переменную экземпляра, если она уже является одним и тем же экземпляром.Swift: Условно установлен частный Ivar
-(void)setManagedObjectContext:(NSManagedObjectContext *)managedObjectContext {
if (![_managedObjectContext isEqual:managedObjectContext]) {
__weak NSPersistentStoreCoordinator *psc = _managedObjectContext.persistentStoreCoordinator;
// iCloud notification subscriptions
NSNotificationCenter *dc = [NSNotificationCenter defaultCenter];
[dc addObserver:self
selector:@selector(storesWillChange:)
name:NSPersistentStoreCoordinatorStoresWillChangeNotification
object:psc];
[dc addObserver:self
selector:@selector(storesDidChange:)
name:NSPersistentStoreCoordinatorStoresDidChangeNotification
object:psc];
[dc addObserver:self
selector:@selector(persistentStoreDidImportUbiquitousContentChanges:)
name:NSPersistentStoreDidImportUbiquitousContentChangesNotification
object:psc];
_managedObjectContext = managedObjectContext;
}}
Возможно ли это с помощью setter of var in swift?
Одно замечание относительно вашего кода 'если ([_ managedObjectContext IsEqual: managedObjectContext]) { '. Я считаю, что вы должны только проверять равенство указателя вместо объекта. Действительно, 'isEqual' проверяет равенство указателя для вас, но сравнение прямого указателя будет выполняться быстрее: if (_managedObjectContext! = ManagedObjectContext) –
Ах да, хорошая точка Макс. Благодарю. –