Използване на просто разширение и вграден издател

В този урок ще научим как лесно да наблюдаваме UserDefaults с помощта на Combine издател.

Без повече шум, нека да започнем.

Да започваме

Помислете за случай, в който искате да запазите силата на звука на музиката на играта в UserDefaults. Вие също искате да наблюдавате промяната и да реагирате по съответния начин. Първата ни стъпка е да дефинираме следното разширение:

Както можем да видим, гетерът връща стойността Float за ключа music_volume и сетерът задава новата стойност за този ключ.

След това нека импортираме Combine и добавим свойството subscriptions, за да съхраним нашия бъдещ абонамент:

Сега можем да добавим действителния абонамент в метода viewDidLoad():

Използвайки пътя на ключа UserDefaults, наблюдаваме свойството musicVolume. Вътре в оператора handleEvents(receiveOutput:) ние просто отпечатваме съобщение, съдържащо последния том.

Сега нека тестваме абонамента. Добавете тези две планирани модификации към свойството musicVolume:

Ние генерираме произволна стойност Float и я присвояваме два пъти със закъснение. Сега, ако изградим и стартираме приложението, ще видим звука на музиката, отпечатан три пъти: веднъж за първоначалната стойност и последните два пъти за модификации (след известно забавяне):

Успешно наблюдавахме UserDefaults.

Обобщавайки

Благодаря за четенето! Надявам се, че сте намерили това за полезно.