Swiftでいこう! - "Combine" - Operators
"Combine"の雰囲気が少し感じたところで、もう少し深く入っていきましょう。紹介動画も2回目となっています。以下はその他の参考サイトです。
前回はPublisherの受けてとして"sink"を使って試しましたが今回は"assign"を使っていきます。どういう時に使うかということからやっていきます。クラスで定義してインスタンス、実体化したもののプロパティに値を入れてやります。Playgroundでやっていきます。
まずクラスです。
class TestResult{
var score:Int
init(score:Int) {
self.score = score
}
}
これを使って実行します。
var test = TestResult(score: 0)
test.score
"0"と表示されます。
そしてJust().assignを使って数字を入れ替えてやります。
Just(10).assign(to: \.score,on: test)
test.score
"10"と表示されました。数字が入れ替えることができました。これはSwiftUIで使う場合に力を発揮するようです。
次に、値が定義しているものと型が違う場合です。クラスでは文字列を指定している場合
class TestResult{
var score:String
init(score:String) {
self.score = score
}
}
受け渡しする時に変換しないといけません。その変換の役割を担うのが
Operators
です。
新しい言葉が出てきました。
Publishers ・・・ データを提供します。
Subscribers ・・・ データを受けます。
Operators ・・・ データを使えるように変換します。
第3の登場人物です。今回は"map"とうのを使います。
class TestResult{
var score:String
init(score:String) {
self.score = score
}
}
var test = TestResult(score: "0")
Just(10)
.map({value in
return String(value)
})
.assign(to: \.score,on: test)
test.score
クラスの中では
var score:String
と文字列の指定をしています。それに伴って
var test = TestResult(score: "0")
scoreも"0"と文字列にしています。そして"map"を使っての変換
Just(10)
.map({value in
return String(value)
})
.assign(to: \.score,on: test)
これでめでたく"10"が出力されました。
次の動画ではNotificationCenter のPublisherの使い方が紹介されています。今までJust()を使ってやってきたので、少し違うPublisherを使うことになります。
で少し詳しく解説があります。SwiftUIで使うときの使い方についての解説が中心ですが、NotificationCenterの使い方もあります。
この記事が気に入ったらサポートをしてみませんか?