RxSwift привязать к форматированному значению переменной

Вам не нужно использовать отсортированную серию для фильтрации ваших данных. Вместо этого вы можете использовать groupby + transform для эффективного создания серии, содержащей вашу группу по строкам.

g = got.groupby('name')['name'].transform('size')

Затем обновите серию условно:

got.loc[g < 2000, 'name'] = 'Other'

Пример использования

df = pd.DataFrame({'name': ['A', 'A', 'B', 'C', 'B']})

g = df.groupby('name')['name'].transform('size')
df.loc[g > 1, 'name'] = 'Other'

print(df)

    name
0  Other
1  Other
2  Other
3      C
4  Other
1
задан Gintas_ 19 January 2019 в 15:50
поделиться

2 ответа

Variable устарела и, возможно, будет удалена в будущем выпуске, поэтому я использовал вместо нее Relay.

Лучшим подходом было бы сделать форматирование в map наблюдаемой последовательности и связать его с выводом.

Примерно так в ViewModel:

var orderDate = BehaviorRelay<Date?>(value: nil)
lazy var formattedOrderButtonText = orderDate.map { return [110] == nil ? "String 1" : "String 2" }

А затем использовать formattedOrderButtonText в контроллере представления для привязки, например:

viewModel.formattedOrderButtonText.bind(to: orderButton.rx.title).disposed(by: disposeBag)
0
ответ дан Mukesh 19 January 2019 в 15:50
поделиться

Сначала вы должны отобразить свою переменную, а затем привязать ее к кнопке

В viewModel:

let dateTitle: Observable<String> = orderDate.map { date -> String in 
                 return date == nil ? "String 1" : return "String 2"
            }

В представлении:

viewModel.dateTitle.bind(to: orderButton.rx.title).disposed(by: disposeBag)

Также Отметьте, чтобы заменить Date на BehaviourSubject или PublishSubject (но я уверен, что вы можете сделать это без сохранения каких-либо данных во ViewModel) Я имею в виду, что если вы сохраняете дату в ViewModel, вы теряете большую часть RxSwift.

Проверьте этот репозиторий , он показывает, как правильно использовать RxSwift:

0
ответ дан Pablo Sanchez Gomez 19 January 2019 в 15:50
поделиться