質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%

Q&A

解決済

1回答

303閲覧

Viewの中で加算を行いたいです。

rikaham0321

総合スコア2

0グッド

0クリップ

投稿2022/05/21 01:55

下のコードは例ですが、この様にif文の中でa+=bと書くと Type '()' cannot comform to 'View' とエラーが出てしまいます。
この場合、どうやっても a+=b をこの場所で実行するのは無理なのでしょうか。
よろしくお願い致します。

struct root :View{
@State private var a=2
@State private var b=3
var body:some View{
ForEach(0..<10){count in
if(a ==count){
Text("加算")
a += b
}
}
}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2022/05/21 02:44

無理です。というか、最終的に何を実現したいのでしょうか?
rikaham0321

2022/05/21 03:01

ご返答ありがとうございます。 言葉足らずで申し訳りません。 最終的に、初めはa日後にそれ以降はb日毎にTextの文字を表示させるリストを作りたいです。 5月21日 加算 減算 5月22日 加算 5月22日 減算 この様な形です。
hoshi-takanori

2022/05/21 08:37

ちょっとよく分からないです。質問文のコードでは「加算」しか表示されないと思いますが、他にも日付や「減産」を表示したいのですか? それはどんな規則性で表示したいのですか?
rikaham0321

2022/05/21 12:33

分かりにくくて申し訳ありません。 そして、考えていただきありがとうございます! 1週間分のリストを表示したいです。 表示の内容は日付と加算や減算などのテキストです。(加算や減算は例です) 加算は初めはa日後に、その後はb日毎に表示したいです。 減算も同様に初めはc日後に、その後はd日毎に表示したいです。 また、a,b,c,dなどは予めTextFieldによって取得しています。 例えば、a=2,b=2,c=1,d=4の場合 5月21日 減算 5月22日 加算 5月23日 5月24日 加算 5月25日 減算 5月26日 加算 5月27日 これが次の日になると 5月22日 加算 5月23日 5月24日 加算 5月25日 減算 5月26日 加算 5月27日 5月28日 加算 と一日更新されるようにしたいです。 複雑ですみません。 よろしくお願い致します。
guest

回答1

0

ベストアンサー

stride(from:to:by:)はどうでしょうか。
https://developer.apple.com/documentation/swift/1641347-stride

swift

1struct root: View { 2 @State private var a = 2 3 @State private var b = 2 4 @State private var c = 1 5 @State private var d = 4 6 var strideToAB: StrideTo<Int> { 7 stride(from: a, to: 8, by: b) 8 } 9 var strideToCD: StrideTo<Int> { 10 stride(from: c, to: 8, by: d) 11 } 12 var body: some View { 13 ForEach(1..<8) { count in 14 Text("日付\(count)") 15 if strideToAB.contains(count) { 16 Text("加算") 17 } 18 if strideToCD.contains(count) { 19 Text("減算") 20 } 21 } 22 } 23}

次の日になると、aやcが変わるイメージですかね?

投稿2022/05/22 01:41

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rikaham0321

2022/05/22 02:29

ありがとうございます! stride(from:to:by)というのがあるのですね。 理想の形にすごく近付きました。 ここ5日程ずっと考え込んで嫌になっていましたが、また頑張れそうです! そうです! 次の日になるとaとcが−1されてa=1,c=0になる様にしたいです。 もう1つ質問があるのですが、現在日付をcalendar.current.date(byAdding:.day,value:0,to:Date())のvalueを変化させています。 この方法で良いのでしょうか? より良い方法が存在するのでしょうか? 重ね重ね申し訳ありません。
退会済みユーザー

退会済みユーザー

2022/05/22 03:56

コメントありがとうございます。 次に進めたようでよかったです。 > もう1つ質問があるのですが、現在日付をcalendar.current.date(byAdding:.day,value:0,to:Date())のvalueを変化させています。 > この方法で良いのでしょうか? 私自身、業務でのSwiftの経験がありませんので、 ベストプラクティスのようなものがわからないのですが、 SwiftはDateだったり、Stringだったりの操作が他の言語に比べて面倒に感じますよね。。 私も `calendar.current.date(byAdding:.day,value:0,to:Date())` を使うかなと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問