Как использовать метод addObserver? У меня signal SIGABRT

swift

#1

Хочу знать, когда меняется количество элементов в массиве, для чего и выбрал NSMutableArray. Хочу, чтобы класс MainTableViewController следил за количеством элементов в shopList, и когда оно меняется, то он выводил принт с данным кол-вом элементов. Пытаюсь добавить observer, но на строчке “shopList.addObserver(self, forKeyPath: #keyPath(NSMutableArray.count), options: .new, context: nil)” выходит такая хыка:


Там в отчете написано “is not supported. Key path: count’”
Если так писать нельзя, то скажите, плиз, каким способом можно реализовать такой функционал?


#2

Так ли необходим NSMutableArray? в массиве будут храниться объекты разных типов? Это совсем не Swift style.

может все-таки попробовать так? (к примеру массив для Int)

var shopList: [Int]! {
    didSet {
        print(shopList.count) 
   }
}

#3

Парень, ты гений!!)) Я бы до такого не додумался)). Я решил использовать NSMutableArray, т.к. это NSObject, и у него есть метод addObserver, который я хочу, но совершенно не умею им пользоваться


#4

didSet это и есть Observer для property )) Из документации


#5

Просто я хотел, чтобы уведомление отправлялось другим классам, поэтому хотел использовать addObserver


#6

Ну так это можно сделать стандартными средствами NotificationCenter там же в didSet.