рдЕрд▓рдорд╛рд░рд┐рдпреЛрдВ рдкрд░ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ

рд╣рд░ рдмрд╛рд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдирдпрд╛ рдврд╛рдВрдЪрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ, рд▓реЛрдЧ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рд╕реЗ рднрд╛рд╖рд╛ рд╕реАрдЦрддреЗ рд╣реИрдВред рд╕реНрд╡рд┐рдлреНрдЯ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рдордп рдЖрдИрдУрдПрд╕ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдпрдж рдпрд╣ рдорд╛рдорд▓рд╛ рдерд╛: рдкрд╣рд▓реЗ рдЗрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ - рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЕрдм, рдпрджрд┐ рдЖрдк рдЦрд░реЛрдВрдЪ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднрд╛рд╖рд╛ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЕрдм рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рд╕реНрд╡рд┐рдлреНрдЯ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рд╕реЗ рдкрд░реЗ рд╣реИред

рдПрдХ рд╣реА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреЗ рдкреИрдорд╛рдиреЗ рдкрд░, рдЪреМрдЦрдЯреЗ рдХреЗ рд╕рд╛рде рд╣реЛ рд░рд╣рд╛ рд╣реИред SwiftUI рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╢рд╛рдпрдж рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдкрд╣рд▓реА рдкреАрдврд╝реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реВрдВ, рдЬрд┐рд╕рдиреЗ рдпреВрдЖрдИрдПрдлрдЯреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реБрдП, рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЛ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЗрд╕рдХреА рдПрдХ рдХреАрдордд рд╣реИ - рдЕрдм рддрдХ рдмрд╣реБрдд рдХрдо рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╛рдордЧреНрд░реА рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рд╣рд╛рдВ, рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реБрд╡рд┐рдзрд╛, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд▓реЗрдЦ рд╣реИрдВред рдПрдХ рд╣реА www.hackingwithswift.com рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдореЗрд░реА рддрд░рд╣ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рд╕реАрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддреЗ рд╣реИрдВред рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдордЧреНрд░реА рд╡рд┐рд╢рд┐рд╖реНрдЯ, рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрддреНрддрд░ рд╣реИрдВред рдПрдХ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдХреНрдпреЛрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рд╢реНрди рдХреЛ рдкреВрдЫрдирд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╡рд╣ рдЗрди рд▓реЗрдЦреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред



рдХрдЯ рдХреЗ рддрд╣рдд, рдореИрдВ рдЙрд╕ рд╕рдордп рдЬреЛ рдореИрдВ рд╕реАрдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рд╣реВрдВ, рдЙрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдФрд░ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рд▓реЗрдЦ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рд▓рдЧрднрдЧ рдПрдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЧрдИ рдПрдХ рдЪрд┐рдЯ рд╢реАрдЯ, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рд╕реНрд╡рдпрдВ рдЕрдкрдиреА рдпрд╛рддреНрд░рд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕реЗ рдкрдврд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рддрдХ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдирд╣реАрдВ рдЧрдП рд╣реИрдВ, рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рднреА рд╣реИрдВ, рдФрд░ рдкрд╛рда рд╕рдВрдмрдВрдзреА рд╡реНрдпрд╛рдЦреНрдпрд╛рдУрдВ рдХреЛ рддрд┐рд░рдЫреЗ рддрд░реАрдХреЗ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рдХреБрдЫ рд╕рдордп рдмрдЪрд╛рдПрдЧрд╛ рдЬрдм рдЖрдк рднреА рдереЛрдбрд╝рд╛ рдЬрд╛рджреВ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛


рдореЗрд░реЗ рдкрд╛рд╕ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдореЛрдмрд╛рдЗрд▓ рд╡рд┐рдХрд╛рд╕ рдкреГрд╖реНрдарднреВрдорд┐ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрднрд╡ рд╣реИ
1s рдореЗрдВ рдпрд╣рд╛рдБ рдЬреНрдпрд╛рджрд╛ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдХреИрд╕реЗ рдФрд░ рдХреНрдпреЛрдВ рдореИрдВрдиреЗ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рд╕реАрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдореИрдВ рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рд╕рдордп рдмрддрд╛рдКрдВрдЧрд╛, рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред

рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдореЛрдмрд╛рдЗрд▓ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдореЗрд░реЗ рд╡рд┐рд╕рд░реНрдЬрди рдХреА рд╢реБрд░реБрдЖрдд рдЖрдИрдУрдПрд╕ 13 рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рд╣реБрдИред рдпрд╣ рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдФрд░ UIKit рдХреА рдЕрдирджреЗрдЦреА рдХрд░рддреЗ рд╣реБрдП, рддреБрд░рдВрдд рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдордиреЛрд░рдВрдЬрдХ рд╕рдВрдпреЛрдЧ рдкрд╛рдпрд╛ рдХрд┐ рдореИрдВрдиреЗ рдРрд╕реЗ рд╕рдордп рдореЗрдВ 1 рд╕реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛: рддрдм рдмрд╕ рдкреНрд░рдмрдВрдзрд┐рдд рд░реВрдк рджрд┐рдЦрд╛рдИ рджрд┐рдПред 1 рд╕реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирдИ рддрдХрдиреАрдХ рдХреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛрдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ рдкрд╛рдВрдЪ рд╕рд╛рд▓ рд▓рдЧ рдЧрдПред рд╣рд░ рдмрд╛рд░ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреБрдЫ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрд╕рдиреЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛: рдЗрд╕реЗ рдЬрд▓реНрджреА рдФрд░ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдЪрд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде, рдпрд╛ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреЗ рдмрд┐рдирд╛ред рд╡рд┐рдХрд▓реНрдк рдЖрдорддреМрд░ рдкрд░ рдЧрддрд┐ рдФрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдирдП рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдирд┐рд╡реЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рджреЗрд░реА рд╣реБрдИ рдереАред

рдЕрдм, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдЙрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рд╣рд░ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрддрд╛ рд╣реИ, рд╣рд░ рдХреЛрдИ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднрд╡рд┐рд╖реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓рд┐рдпрд╛ рд╣реИред рдЬрдм рддрдХ рдкрд╛рд▓рддреВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рдерд╛ рдХрд┐ рдХреМрди рд╕реА рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рд░рд╛рдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдореМрдХрд╛ рд▓реЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕реЗ рдПрдХ рдпрд╛ рджреЛ рд╕рд╛рд▓ рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдФрд░ рдЬрдм рд╕реЗ рдРрд╕рд╛ рд╣реБрдЖ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдЧреНрд░рджреВрддреЛрдВ рдореЗрдВ рд╕реЗ рдерд╛, рдореИрдВрдиреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЧреБрд░реБ рдирд╣реАрдВ рд╣реВрдВ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдореЛрдмрд╛рдЗрд▓ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ - рдПрдХ рдХреЗрддрд▓реАред рдлрд┐рд░ рднреА, рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рдореИрдВрдиреЗ рдЬрд╛рдирдХрд╛рд░реА рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╕рднреА рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЛ рдЦреЛрдЬрд╛, рдФрд░ рдореИрдВ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рд░реВрд╕реА рдореЗрдВ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдЕрдкрдиреА рддрд╛рдХрдд рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдирдкреБрдВрд╕рдХ рдХреЛ рджреВрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛, рдФрд░ рдЙрд╕ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬреЛ рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдореИрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реВрдВрдЧрд╛ рдХрд┐ рдкрд╛рдардХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдо рд╕реЗ рдХрдо SwiftUI рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдФрд░ рдореИрдВ VStack{тАж} , Text(тАж) , рдЖрджрд┐ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рдирд╣реАрдВ VStack{тАж} ред

рдореИрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЫрд╛рдкреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХреБрдЫ рд╕рдордЭ рдирд╣реАрдВ рд╕рдХрд╛, рдФрд░ рдХреБрдЫ рдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдЧрд▓рдд рдпрд╛ рдЧрд▓рдд рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕реБрдзрд╛рд░ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХрд╛ рдЬреЛрд░рджрд╛рд░ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд▓реЗрдЦ рд╕реНрдкрд╖реНрдЯ рдЪреАрдЬреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рд╕реЗ рднрд░рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдЦреНрддреА рд╕реЗ рдиреНрдпрд╛рдп рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдкрд░ рдбрдореА рдХреЗ рд▓рд┐рдП рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЕрднреА рддрдХ рдирд╣реАрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред

рдпрд╣ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреНрдпрд╛ рд╣реИ?


рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рдЖрдкрдХреА рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рд╣реИред рдпрд╣рд╛рдБ рдлрд┐рд░ рд╕реЗ, рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрддреАрдд рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИред рдкреНрд░рдмрдВрдзрд┐рдд рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рддрднреА рдордЬрдмреВрдд рд╣реБрдЖ рдЬрдм рдореИрдВрдиреЗ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдореЗрдВ рд▓реЗрдЖрдЙрдЯ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдХреБрдЫ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦреЗ (рдпрд╛рдиреА рдЬрдм UIKit рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП)ред рдореИрдВрдиреЗ 1s рдореЗрдВ "рдмреЗрдХрд╛рдмреВ" рд░реВрдкреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрджрд╛рд╕реАрдирддрд╛ рд▓реА: рдлрд╛рд░реНрдо рдкрд░ рддрддреНрд╡реЛрдВ рдХрд╛ рдореИрдиреБрдЕрд▓ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ ... рдУрд╣, рдЬрдм рд▓рдЧрднрдЧ 20 рдорд┐рдирдЯ рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡реЛрдВ рдХреЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдФрд░ рд╕реНрдХреНрд░реАрди рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдмрдВрдзрди рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА, рддреЛ рдореБрдЭреЗ рдПрдХ рдореБрд╕реНрдХрд╛рди 1C - рдХреЗ рд╕рд╛рде рдпрд╛рдж рдЖрдИред рдирд┐рдпрдВрддреНрд░рд┐рдд рд░реВрдкреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдм рдХреБрдЫ рд╕рдорд╛рди рдерд╛ред рдареАрдХ рд╣реИ, рд▓рдЧрднрдЧ ... рдереЛрдбрд╝рд╛ рдмреБрд░рд╛, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдФрд░ рддрджрдиреБрд╕рд╛рд░ - рдЖрд╕рд╛рдиред рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ, рдПрдкреНрдкрд▓ рд╕реЗ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдкреНрд░рдмрдВрдзрд┐рдд рд░реВрдк рд╣реИред рдХреЛрдИ рдмрдВрдзрди рдирд╣реАрдВред рдХреЛрдИ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдФрд░ segwaysред рдЖрдк рдмрд╕ рдХреЛрдб рдореЗрдВ рдЕрдкрдиреЗ рд╡реНрдпреВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рд╡рд╣ рд╕рдм рд╣реИред рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ, рдЖрдХрд╛рд░, рдЖрджрд┐ рдХреЛ рд╕реАрдзреЗ рдХреЛрдб рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдХрд╛рдлреА рд╕рд░рд▓ред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЖрдк рдХреИрдирд╡рд╕ рдореЗрдВ рдореМрдЬреВрджрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдмрдбрд╝реА рд╡рд┐рдХрд╛рд╕ рдЯреАрдореЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬрд╣рд╛рдВ рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд▓реЗрдЖрдЙрдЯ рдФрд░ рд╡реНрдпреВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЗрдВрдбреА рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╕рдВрдж рд╣реИред

рдШреЛрд╖рдгрд╛рддреНрдордХ рд╢реИрд▓реА


SwiftUI рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рджреГрд╢реНрдп рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЛрдб рдореЗрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Apple рд╣рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╢реИрд▓реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:
тАЬрдпрд╣ рдПрдХ рджреГрд╢реНрдп рд╣реИред рдпрд╣ (рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореИрдВ "рджреГрд╢реНрдп" рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдПрдХ рдорд╣рд┐рд▓рд╛ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП) рджреЛ рдкрд╛рда рдлрд╝реАрд▓реНрдб рдФрд░ рдПрдХ рдЪрд┐рддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдкрд╛рда рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЫрд╡рд┐ рдЙрдирдХреЗ рдиреАрдЪреЗ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдПрдХ рдЪрдХреНрд░ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред "
рдЕрд╕рд╛рдорд╛рдиреНрдп рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдЖрдорддреМрд░ рдкрд░, рдХреЛрдб рдореЗрдВ рд╣рдо рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рд╕рд┐рд░ рдореЗрдВ рдЬреЛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИ рдЙрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
"рдПрдХ рдмреНрд▓реЙрдХ рдбрд╛рд▓реЗрдВ, рдЗрд╕ рдмреНрд▓реЙрдХ рдореЗрдВ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдбрд╛рд▓реЗрдВ, рдЙрд╕рдХреЗ рдмрд╛рдж рдПрдХ рдЕрдиреНрдп рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рддрд╕реНрд╡реАрд░ рд▓реЗрдВ, рдЗрд╕рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЧреЛрд▓ рдХрд░рдХреЗ рдлрд╕рд▓ рджреЗрдВ, рдФрд░ рдиреАрдЪреЗ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВред"
рдпрд╣ Ikea рд╕реЗ рдлрд░реНрдиреАрдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдореЗрдВ, рд╣рдо рддреБрд░рдВрдд рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреИрдирд╡рд╛рд╕ рдпрд╛ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рднреА, рдХреЛрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡реНрдпреВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдФрд░ рдХрд┐рди рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

FunctionBuilder рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ, рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреИрд╕реЗ рджреЗрддрд╛ рд╣реИ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдмреЗ рдкрд░ рд╣реИ ред

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдШреЛрд╖рдгрд╛рддреНрдордХ рд╢реИрд▓реА рдФрд░ рдЗрд╕рдХреЗ рд▓рд╛рднреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ред рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рдереЛрдбрд╝реА рдЖрджрдд рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдЗрд╕ рд╢реИрд▓реА рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдХрд┐рддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЗрд╕ рдХреЗ рд╕рд╛рде, Apple рдиреЗ рдмреБрд▓рд╕реЗ рдХреЛ рдХреНрдпрд╛ рдХрд╣рд╛!

рдХреНрдпрд╛ рджреЗрдЦреЗрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдирддрд╛ рд╣реИ?


рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдПрдХ рдХрд░реАрдм рджреЗрдЦреЛред Apple рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╢реИрд▓реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 struct ContentView: View { var text1 = "some text" var text2 = "some more text" var body: some View { VStack{ Text(text1) .padding() .frame(width: 100, height: 50) Text(text2) .background(Color.gray) .border(Color.green) } } } 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ, View рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИред рд╕рдВрд░рдЪрдирд╛ View рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрд░рд┐рдХрд▓рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ body рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ some View рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред body: some View { тАж } рдХреА рд╕рд╛рдордЧреНрд░реА body: some View { тАж } рдмрдВрдж рд╣реЛрдиреЗ рдХрд╛ рд╡рд░реНрдгрди рд╣реИ рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╡рд╣ рд╕рдм рд╣реИ рдЬреЛ рд╣рдорд╛рд░реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рд╡реНрдпреВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ body рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред

рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЕрд▓рдорд╛рд░рд┐рдпреЛрдВ


рдХреБрд▓ рдореЗрдВ, рдореИрдВрдиреЗ рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдЧрд┐рдирд╛ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рджреГрд╢реНрдп рдХрд╛ рд╢рд░реАрд░ рдирд┐рд░реНрдорд┐рдд рд╣реИ:

  • рдЕрдиреНрдп рджреГрд╢реНрдп
    рдпрд╛рдиреА рдкреНрд░рддреНрдпреЗрдХ рджреГрд╢реНрдп рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЕрдиреНрдп View ред рд╡реЗ, рдмрджрд▓реЗ рдореЗрдВ, рджреЛрдиреЛрдВ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреЛ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ Text() , рдФрд░ рдХрд╕реНрдЯрдо, рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд рдЬрдЯрд┐рд▓ред рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдЧреБрдбрд╝рд┐рдпрд╛ рдХреЛ рдЕрд╕реАрдорд┐рдд рд╕реНрддрд░ рдХреЗ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред
  • рд╕рдВрд╢реЛрдзрдХ
    рд╕рдВрд╢реЛрдзрдХ рдХреА рдорджрдж рд╕реЗ, рд╕рднреА рдЬрд╛рджреВ рд╣реЛрддрд╛ рд╣реИред рдЙрдирдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рджреГрд╢реНрдп рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЕрднреА рднреА рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрд╢реЛрдзрдХ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд View рдХреА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЯреБрдХрдбрд╝рд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
  • рдХрдВрдЯреЗрдирд░
    рдкрд╣рд▓рд╛ рдХрдВрдЯреЗрдирд░ рдЬреЛ рдорд╛рдирдХ "рд╣реИрд▓реЛ, рджреБрдирд┐рдпрд╛" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд╡рд╣ рд╣реИрдВ HStack рдФрд░ VStack ред рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж, Group , Section рдФрд░ рдЕрдиреНрдп рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рд╕рдорд╛рди рджреГрд╢реНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рдРрд╕реА рд╕рд╛рдордЧреНрд░реА рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХрдВрдЯреЗрдирд░ рдХреА рдкреВрд░реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдореВрд╣ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдЕрд░реНрде рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрд╢реЛрдзрдХ рдПрдХ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рджреГрд╢реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдХрдВрдЯреЗрдирд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд░рдо рдореЗрдВ рдЗрди рджреГрд╢реНрдп (рд╕рд╛рдордЧреНрд░реА рддрддреНрд╡реЛрдВ, рдпрд╛ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдмреНрд▓реЙрдХреЛрдВ) рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рдВрдмрд╡рдд рдпрд╛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ ( VStack{...} HStack{...} )ред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рднреА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ ForEach рдпрд╛ GeometryReader , рд╣рдо рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

    рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рджреГрд╢реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдФрд░ рд╡рд╣ рд╕рдм рд╣реИред Purebred SwiftUI рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдард╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рдВ, рдпрд╣ рдЖрдкрдХреЗ рд╡реНрдпреВ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдЕрдкрдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

.modifiers () - рд╡реЗ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИрдВ?


рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╕рдВрд╢реЛрдзрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдзрд╛рд░рдг рдмрд╛рдд рд╣реИред рд╡рд╣ рдмрд╕ рдХреБрдЫ View рд▓реЗрддрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рдХрд░рддрд╛ рд╣реИ?) , рдФрд░ рдЙрд╕реЗ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╛рдиреА рд╕рдВрд╢реЛрдзрдХ View рд╣реА рдПрдХ рдлрдВрдХреНрд╢рди рд╣реИ, рдЬреЛ self рд▓реМрдЯрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рдХреБрдЫ рд╕рдВрд╢реЛрдзрди рдХрд┐рдП рдЧрдП рд╣реИрдВред

рдиреАрдЪреЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрд╢реЛрдзрдХ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдореИрдВ рдореМрдЬреВрджрд╛ рд╕рдВрд╢реЛрдзрдХ frame(width:height:) рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рджреГрд╢реНрдп рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдпрд╛рдореЛрдВ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмреЙрдХреНрд╕ рд╕реЗ, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ CGSize рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХреЗрд╡рд▓ рд▓рдВрдмрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдереА, рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдмрддрд╛рдКрдВрдЧрд╛ред

 struct FrameFromSize: ViewModifier{ let size: CGSize func body(content: Content) -> some View { content .frame(width: size.width, height: size.height) } } 

рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде, рд╣рдордиреЗ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдИ рд╣реИ рдЬреЛ ViewModifier рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рддреА рд╣реИред рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ body() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬрд┐рд╕рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдХреБрдЫ Content рд╣реЛрдЧреА, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ some View : рд╣рдорд╛рд░реЗ View рдХреЗ body рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░ (рд╣рдо рдиреАрдЪреЗ рдХреБрдЫ рд╡реНрдпреВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ) ред рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА Content ?

рдХрдВрдЯреЗрдВрдЯ + рд╡реНрдпреВрдмреНрдпреБрд▓реНрдЯ = рджреЗрдЦреЗрдВ


рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдРрд╕рд╛ рдХрд╣рддрд╛ рд╣реИ:
`рдХрдВрдЯреЗрдВрдЯ` рдЙрд╕ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ` рд╕реЗрд▓реНрдл` рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╕рдВрд╢реЛрдзрдХ рд╣реЛрдЧрд╛ред
рдпрд╣ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЬреЛ рдПрдХ рд╡реНрдпреВ рдкреНрд░реАрдлрд╝реИрдм рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрд╢реЛрдзрдХ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрд░реНрдз-рддреИрдпрд╛рд░ рдЙрддреНрдкрд╛рджред рджрд░рдЕрд╕рд▓, Content рдПрдХ рдбрд┐рдХреНрд▓реЗрдХреНрдЯрд┐рд╡ рд╕реНрдЯрд╛рдЗрд▓ рдХреНрд▓реЛрдЬрд░ рд╣реИ рдЬреЛ View рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рд╣рдо рдХреБрдЫ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣ рд╕рдм рдХрд░рддрд╛ рд╣реИ body рд╕реЗ рдХреНрд▓реЛрдЬрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ body рдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЗрд╕ рдХреНрд▓реЛрдЬрд░ рдореЗрдВ рдЕрдкрдиреЗ рдкрд╛рдВрдЪ рд╕реЗрдВрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рдПрдХ рдмрд╛рд░ рдлрд┐рд░, View рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ Content ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, ViewBuilder рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдПрдХ рдШреЛрд╖рд┐рдд рд╢реИрд▓реА ( Content ) рдореЗрдВ рдПрдХ рдмрдВрдж ViewBuilder рд╣рдореЗрдВ рдПрдХ рджреГрд╢реНрдп рджреЗрддрд╛ рд╣реИред

рдЖрдЗрдП рдЕрдкрдиреЗ рд╕рдВрд╢реЛрдзрдХ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, FrameFromSize рд╕рдВрд░рдЪрдирд╛ рдХреА рдШреЛрд╖рдгрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ FrameFromSize рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред body рдЕрдВрджрд░ body рд╣рдо рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 RoundedRectangle(cornerRadius: 4).modifier(FrameFromSize(size: size)) 

modifier рдПрдХ рджреГрд╢реНрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдП View рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдХрд╛рд▓рддреА рд╣реИ, рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмреЙрдбреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рддреА рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЖрдЧреЗ ViewBuilder рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рдпрд╛ рдЕрдЧрд▓реЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд░рддреА рд╣реИ, рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдХреЗ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╡реНрдпреВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

 extension View{ func frame(_ size: CGSize) -> some View { self.modifier(FrameFromSize(size: size)) } } 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдореМрдЬреВрджрд╛ рдореЙрдбрд┐рдлрд╛рдпрд░ рдХреЛ .frame(width: height:) ред .frame(width: height:) рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ .frame(width: height:) ред рдЕрдм, рд╣рдо рдХрд┐рд╕реА рднреА View рд▓рд┐рдП frame(size:) рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдЧрд▓рддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛
рд╡реИрд╕реЗ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдкреВрд░реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдерд╛, рдпрд╣ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ RoundedRectangle рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рдерд╛ - рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Xcode рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдЕрд╢реБрджреНрдзрддрд╛ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА, рдФрд░ рдПрдХ рдЕрдирдЬрд╛рдиреЗ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЧрд┐рд░ рдЧрдпрд╛ " Abort trap: 6 " Abort trap: 6 тАЭрдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдбрдВрдк рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ред рдЖрдо рддреМрд░ рдкрд░, SwiftUI рдореЗрдВ, рддреНрд░реБрдЯрд┐ рд╡рд┐рд╡рд░рдг рдЕрдм рддрдХ рдмрд╣реБрдд рдмрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдХреЛ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЙрд╕реА рддрд░рд╣, рдЖрдк рдХреЛрдИ рднреА рдХрд╕реНрдЯрдо рд╕рдВрд╢реЛрдзрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ:

 RoundedRectangle(cornerRadius: 4).frame(size) 

рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗред

рдореИрдВ рдПрдХ рдзрд╛рдЧреЗ рдореЗрдВ рдкрд┐рд░реЛрдП рдЧрдП рдореЛрддрд┐рдпреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ - рд╣рдорд╛рд░рд╛ рджреГрд╢реНрдпред рдпрд╣ рд╕рд╛рджреГрд╢реНрдп рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рднреА рд╕рд╣реА рд╣реИ рдХрд┐ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рдорд╛рдорд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред



SwiftUI рдореЗрдВ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ View рд╣реИ
рд╡реИрд╕реЗ, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЯрд┐рдкреНрдкрдгреАред рдПрдХ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рджреЗрдЦреЗрдВред рдпрд╛рдиреА рд░рдВрдЧ рд╡рд░реНрдЧ рдХреЗрд╡рд▓ рд░рдВрдЧ рдХрд╛ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдкреВрд░реНрдг рджреГрд╢реНрдп рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрд╢реЛрдзрдХ рдФрд░ рдЕрдзрд┐рдХ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдк рдЕрдиреНрдп рджреГрд╢реНрдп рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрд╢реЛрдзрдХ - рдХреЗрд╡рд▓ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП
рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдФрд░ рдмрд┐рдВрджреБ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд╕реНрд░реЛрдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рди рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдХреЗрд╡рд▓ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА рдЖрдк рд╕рдВрд╢реЛрдзрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ рдЬреЛ рдХреБрдЫ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдХреЛрдИ рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред Apple рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╕рдордп рд▓рдЧрд╛рддрд╛рд░ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдШреЛрд╖рдгрд╛ рд╢реИрд▓реА рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИред

рдлрд┐рд░ рднреА рджреЗрдЦреЗрдВ


рдкрд╣рд▓реЗ рд╣рдордиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА рдХрд┐ body рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, View рдХрд╛ рдирд┐рдХрд╛рдп рдпрд╛ рдЙрд╕рдХреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдирд┐рд░реНрджреЗрд╢ рдХреНрдпрд╛ рд╣реИрдВред рдЖрдЗрдП View рд╕реНрд╡рдпрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ body рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд┐ Content рдХреНрдпрд╛ Content , body рд╡рд╛рдВрдЫрд┐рдд рджреГрд╢реНрдп рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИ, рдЬреЛ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдПрдХ рдмрдВрдж рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдмрдВрдж рдХреЛ рд╡рд╛рдкрд╕ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдХреБрдЫ рджреГрд╢реНрдп - рд╕реБрд╡рд┐рдзрд╛




рдФрд░ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рд╕рд╡рд╛рд▓ рдкрд░ рдЖрддреЗ рд╣реИрдВ рдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВ рдЗрд╕рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдиреЗ рдореБрдЭреЗ рд╡рд░реНрдХрд┐рдВрдЧ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрд╛ред рдпрд╣ some View рдХреНрдпрд╛ рд╣реИ? рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╡рд░рдг рдПрдХ "рдЕрдкрд╛рд░рджрд░реНрд╢реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд░" рд╣реИ - рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред

some рдХреАрд╡рд░реНрдб рдПрдХ "рдЬреЗрдиреЗрд░рд┐рдХ" рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬреЛ рдПрдХ рдХреНрд▓реЛрдЬрд░ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рд╣реИ рдЬреЛ рдХреЛрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдХреА рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рджреГрд╢реНрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдкрд╛рда, рдЫрд╡рд┐, рдпрд╛ рд╢рд╛рдпрдж рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдХреБрдЫ рд╕рдВрд░рдЪрдирд╛ред рдХреБрдЫ рдХреАрд╡рд░реНрдб рдХреА рдкреВрд░реА рдЪрд┐рдк "рдЬреЗрдиреЗрд░рд┐рдХ" рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╡реНрдпреВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдпрд╣ рдЖрдкрдХреЗ рджреГрд╢реНрдп рдХреЗ рд╢рд░реАрд░ рдХреЗ рдЕрдВрджрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ Xcode рдЗрд╕ рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдФрд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛) рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдХреБрдЫ рд╕рд┐рд░реНрдл рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдорд╛рд░реЛрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдмреЛрдЭ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИред рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ: "рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╛ рджреГрд╢реНрдп рд╣реЛрдЧрд╛", рдФрд░ рдХреМрди рд╕рд╛ - рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВред рдпрд╣рд╛рдВ рдХреБрдВрдЬреА рдпрд╣ рд╣реИ рдХрд┐ рдареЛрд╕ рдкреНрд░рдХрд╛рд░ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рд╕реАрдзреЗ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ред рдЗрд╕рд▓рд┐рдП, рдКрдкрд░, рд╕рд╛рдорд╛рдиреНрдп рдореИрдВрдиреЗ рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ред

Xcode рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдмрд┐рдирд╛ рдпрд╣ рдЬрд╛рдиреЗ рдХрд┐ рдЖрдк рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдХреМрди рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ - рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж, рдХреБрдЫ рджреГрд╢реНрдп рдХреЛ рдЖрдкрдХреЗ View рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдХрд╛рд░ рдХрд╛рдлреА рдирд┐рдпрддрд╛рддреНрдордХ рд╣реИ, рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ: Group<TupleView<(Text, ForEach<[SomeClass], SomeClass.ID, Text>)>> ред

рдирдореВрдирд╛ рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 Group{ Text(тАж) ForEach(тАж){(value: SomeClass) in Text(тАж) } } 

ForEach , рдЬреИрд╕рд╛ рдХрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд░рдирдЯрд╛рдЗрдо рд▓реВрдк рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ View рдЬреЛ рдХреБрдЫ SomeClass рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдВрдЧреНрд░рд╣ рддрддреНрд╡ рд╕реЗ рдЬреБрдбрд╝реЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ subView рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рддрддреНрд╡ рдЖрдИрдбреА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ subView рдЯрд╛рдЗрдк Text рдХрд╛ рдПрдХ subView ред Text рдФрд░ ForEach рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ TupleView , рдФрд░ рдпрд╣ рд╕рдм Group рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо ForEach рдмрд╛рд░реЗ ForEach рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЕрдЧрд░ рд╣рдо рдкреИрд░рд╛рдореАрдЯрд░ body рддрд░рд╣ рдПрдХ рд╕рдЯреАрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реБрдП рддреЛ рдХрд┐рддрдирд╛ рд▓реЗрдЦрди рд╣реЛрдЧрд╛? рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, some рдХреАрд╡рд░реНрдб рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╕рд╛рд░рд╛рдВрд╢
some , рдпрд╣, рд╕рд╛рдорд╛рдиреНрдп рд╣реИ - рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд тАЭред рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рдХреНрд▓рд╛рд╕рд┐рдХ рдЬреЗрдиреЗрд░рд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рдПрдХреНрд╕рдХреЛрдб рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред some- рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХреЛрдб рдкрд░ рд╣реАред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рд╣реИ, рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди (рдкреНрд░реЛрдЯреЛрдХреЙрд▓) рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдореВрд▓реНрдп рдХреЗ рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдХреБрдЫ рджреГрд╢реНрдп - рдФрд░ рдкрд░рд┐рдгрд╛рдо


рд╢рд░реАрд░ рдХреЗ рдЕрдВрджрд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕реНрдереИрддрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЬрдиреНрдо рджреЗрддрд╛ рд╣реИ:

  • рдЬрдм рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Xcode рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд░реАрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред рдЬрдЯрд┐рд▓ рдирд┐рдХрд╛рдпреЛрдВ рдореЗрдВ, рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдирд┐рдХрд╛рдпреЛрдВ рдореЗрдВ, рд╡рд╣ рд╕рдордЭрджрд╛рд░реА рдХреЗ рд╕рд╛рде рд╕рдордп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рд╕реАрдзреЗ рдРрд╕рд╛ рдХрд╣реЗрдЧрд╛ред

    рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡реНрдпреВ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рдмрд╕реЗ рдЕрд▓рдЧ рд╡реНрдпреВ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдкрдХрд╛ рдХрд╕реНрдЯрдо рд╡реНрдпреВ, рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдЗрд╕ рд╕рд╛рд░реА рдЧрдбрд╝рдмрдбрд╝ рд╕реЗ рдкрд╛рдЧрд▓ рдирд╣реАрдВ рд╣реЛрдиреЗ рджреЗрддрд╛ рд╣реИред
    рд╡реИрд╕реЗ, рдХреИрдирд╡рд╕ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдиреЗ, рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрдбрд╝реЗ рд╡реНрдпреВ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
  • рд╣рдо рд╕реАрдзреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред If - if SwiftUI рдлрд┐рд░ рднреА рдЗрд╕реЗ рдЯрд╛рдЗрдк рдХрд░рдХреЗ "Schr├╢dinger View" рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИ <_ConditionalContent <Text, TextField >> рддреЛ рдЯреНрд░рд┐рдирд┐рдпрд░ рдХрдВрдбреАрд╢рди рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╣реАрдВ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреАред

    рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рдПрдХ рд╣реА рдХреНрд░рдо рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИред

рд╢рд░реАрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░


рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЕрдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдЖрдк рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдмрд╛рд╣рд░реА рдорд╛рдкрджрдВрдбреЛрдВ


рдпреЗ рд╕рд░рд▓ рд╕рдВрд░рдЪрдирд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдмрд╛рд╣рд░ рд╕реЗ рдкрд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

 struct TextView: View { let textValue: String var body: some View { Text(textValue) } } 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, textValue рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП textValue рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ рдЬрд┐рд╕реЗ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕рдВрд░рдЪрдирд╛рдПрдБ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреАрдврд╝реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ, рд╣рдо рдЗрд╕ рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  TextView(textValue: "some text") 

рдмрд╛рд╣рд░ рд╕реЗ, рдЖрдк рдЙрди рдХреНрд▓реЛрдЬрд░ рдХреЛ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдХреЗ рд╣реЛрдиреЗ рдкрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Button(lable:action:) рдХрд░рддрд╛ рд╣реИ рдХрд┐: рдПрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдкрд╛рд░рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред

рд░рд╛рдЬреНрдп - рдорд╛рдкрджрдВрдбреЛрдВ


SwiftUI рдмрд╣реБрдд рд╣реА рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдирдИ рд╕реНрд╡рд┐рдлреНрдЯ 5.1 рд╕реБрд╡рд┐рдзрд╛ - рд╕рдВрдкрддреНрддрд┐ рдЖрд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпреЗ рд░рд╛рдЬреНрдп рдЪрд░ рд╣реИрдВ - рд╣рдорд╛рд░реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреИрд░рд╛рдореАрдЯрд░, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПредрд╡реЗ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд░рдгреЛрдВ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╣реИрдВ @State- рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдФрд░ @ObservedObject- рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдПред рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ObservableObject- рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╡рд░реНрдЧ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рджреЗрдЦреЗрдВ, рдЬреЛ рдЗрд╕ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдЖрд╡рд░рдг рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ @ObservedObject) рдЕрдкрдиреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЖрд╡рд╢реНрдпрдХ рдЧреБрдгреЛрдВ рдХреЛ рд▓рдкреЗрдЯреЗрдВ @Publishedред

рдпрджрд┐ рдЖрдк рдЖрд╕рд╛рди рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЖрд╡рд░рдг рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ ObservableObjectPublisherрдХреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ willSet(), рдЬреИрд╕рд╛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ ред

рдпрд╛рдж рд╣реИ, рдореИрдВрдиреЗ рдХрд╣рд╛ рдерд╛bodyрдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╕рдВрдкрддреНрддрд┐ рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рддреБрд░рдВрдд рд╕реНрдЯреЗрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рдмрд╛рдд рдирд╣реАрдВ рд╕рдордЭреА, рдФрд░ рдореИрдВрдиреЗ bodyрдмрд┐рдирд╛ рдХрд┐рд╕реА рд░реИрдкрд░ рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рд╕реНрдЯреЗрдЯ рд╡реИрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА ред рд╕рдорд╕реНрдпрд╛ bodyрдпрд╣ рд╣реИ рдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдпрд╣ рдПрдХ рд╕рд╛рдВрд╡рд┐рдзрд┐рдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИред рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рджреГрд╢реНрдп рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╢рд░реАрд░ рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рд╕рдВрдкреВрд░реНрдг рд╕рдВрджрд░реНрдн рд▓реИрдВрдбрдлрд┐рд▓ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ред рдЕрдЧрд▓рд╛, рдХреЗрд╡рд▓ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рдВрд░рдЪрдирд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд░рд╣рддреЗ рд╣реИрдВред рд░рд╛рдЬреНрдп-рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп, рд╣рдорд╛рд░реЗ рд╕рднреА ViewрдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдирд┐рд░реНрджреЗрд╢ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рднреА рд╕рдВрд░рдЪрдирд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕реНрдХреНрд░реАрди рдкрд░ рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХреА рдЬрд╛рддреА рд╣реИ, рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЕрдЧрд▓реА рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред bodyрдЗрд╕рдХреЗ рд╕рд╛рде - рд╕рд╛рде рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рдЪрд░ ред рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рд░ рдХреЛ рди рд╕рдордЭрддреЗ рд╣реБрдП, рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдФрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА
рдЖрдк didSet willSetрдХрд┐рд╕реА рднреА рд░реИрдкрд░ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╕рдВрд░рдЪрдирд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ ред рд╕рдВрдХрд▓рдХ рдЖрдкрдХреЛ рдпрд╣ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рд░реИрдкрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрд▓рд╛рд╕рд┐рдХ рд░рд╛рдЬреНрдп рдЙрджрд╛рд╣рд░рдг :

 struct ContentView: View { @State var tapCount = 0 var body: some View { VStack { Button(action: {self.tapCount += 1}, label: { Text("Tap count \(tapCount)") }) } } } 

рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░


рдЦреИрд░, рджреЗрдЦреЗрдВ рд╕реЗрд╡рд╛ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @State @ObservedObjectред рд▓реЗрдХрд┐рди рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ View? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, SwiftUI рдХреЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдкреНрд░реЙрдкрд░реНрдЯреАрд╡реЙрдкрд░ рд╣реИ - @Bindingред рдХреНрд▓рд┐рдХреЛрдВ рдХреА рдЧрд┐рдирддреА рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЯрди рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрднрд┐рднрд╛рд╡рдХ рд╣реИ View, рдЬреЛ рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдХреНрд▓рд┐рдХ рдХрд╛рдЙрдВрдЯрд░ рдФрд░ ViewрдПрдХ рдмрдЯрди рд╡рд╛рд▓реЗ рдмрдЪреНрдЪреЗ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ ред рдореВрд▓ рджреГрд╢реНрдп рдореЗрдВ, рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдЗрд╕ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ @State- рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рдХрд╛рдЙрдВрдЯрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред рд▓реЗрдХрд┐рди рд╕рд╣рд╛рдпрдХ рдореЗрдВ, рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП @Bindingред рдпрд╣ рдПрдХ рдФрд░ рдкреНрд░реЙрдкрд░реНрдЯреА рд░реИрдкрд░ рд╣реИ, рдЬрд┐рд╕рдХреА рдорджрдж рд╕реЗ рд╣рдо рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рди рдХреЗрд╡рд▓ рдмрджрд▓реЗрдЧрд╛, рдмрд▓реНрдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкрд╛рд╕ рднреА рд▓реМрдЯреЗрдЧрд╛ Viewред рдпрд╣ рдПрдХ рддрд░рд╣ рдХрд╛ inoutрдорд╛рд░реНрдХрд░ рд╣реИViewред рдЬрдм рдХреЛрдИ рдореВрд▓реНрдп рдмрдЪреНрдЪреЗ рдХреЗ рджреГрд╢реНрдп рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрд╕ рдкреИрд░реЗрдВрдЯ рд╡реНрдпреВ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдпрд╛ рдерд╛ред рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ inout, рд╣рдореЗрдВ $,рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рддреАрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд░рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рджреВрд╕рд░реЗ рдорд╛рди рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рд╕рдВрдЪрд░рд┐рдд рдореВрд▓реНрдп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред

 struct ContentView: View { @State var tapCount = 0 var body: some View { VStack{ SomeView(count: $tapCount) Text("you tap \(tapCount) times") } } } 

рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рднреА рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред @Binding var tapCount: IntрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдм рдХреЗрд╡рд▓ рдПрдХ IntрдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ , рдпрд╣ рд╣реИ

 Binding<Int> 

рдпрд╣ рдЬрд╛рдирдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ Viewред

 struct SomeView: View{ @Binding var tapCount: Int init(count: Binding<Int>){ self._tapCount = count //    -    } var body: some View{ Button(action: {self.tapCount += 1}, label: { Text("Tap me") }) } } 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ initрдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ @PropertyWrapperрдПрдХ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП self._- рдпрд╣ рд╢реБрд░реБрдЖрддреА рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрдм selfрдЕрднреА рднреА рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЗрд╕рдХреА рдорджрдж рд╕реЗ self._рд╣рдо рдЗрд╕рдХреЗ рдЖрд╡рд░рдг рдХреЗ рд╕рд╛рде рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд░реИрдкрд░ рдХреЗ рдЕрдВрджрд░ рдореВрд▓реНрдп рдкрд░ рд╕реАрдзреЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмрд┐рдирд╛ рдЕрдВрдбрд░рд▓рд╛рдЗрди рдХрд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдмрджрд▓реЗ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рд▓рд┐рдкрдЯрд╛ рд╣реБрдЖ рдПрдХ рдЪрд░ рд╣реИ PropertyWrapper, рддреЛ рд╣рдореЗрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдЖрд╡рд░рдг рдкреНрд░рдХрд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ

 Binding<Int> 

рдЖрдк рдХреЗ Intрдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ .wrappedValueред

рдФрд░ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реЗрдХ
, Binding . View View. View , @Binding-. , View State @Binding тАФ , State- Binding. -, , .

EnvironmentObject


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, EnvironmentObjectрдкреИрд░рд╛рдореАрдЯрд░ рд╕рдорд╛рди рд╣реИрдВ Binding, рдХреЗрд╡рд▓ Viewрдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рд╕рднреА рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд , рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ред

 ContentView().environmentObject(session) 

рдЖрдорддреМрд░ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐, рдпрд╛ рдЗрд╕рдХрд╛ рдХреБрдЫ рд╣рд┐рд╕реНрд╕рд╛, рдЬрд┐рд╕реЗ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рд╡реНрдпреВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рд╕рддреНрд░, рдпрд╛ рдХреБрдЫ рд╕рдорд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛, рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рдкрд░реНрдпрд╛рд╡рд░рдг рджреГрд╢реНрдп рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдореВрд▓ рджреГрд╢реНрдп рдореЗрдВред рдкреНрд░рддреНрдпреЗрдХ рджреГрд╢реНрдп рдореЗрдВ, рдЬрд╣рд╛рдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд░реИрдкрд░ @EnvironmentObject рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

  @EnvironmentObject var session: Session 

рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реНрд╡рдпрдВ рдкреНрд░рдХрд╛рд░ рд╣реИред рдпрджрд┐ рдЖрдк EnvironmentObjectрдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рдорд╛рди рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдХреНрд░рдо рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред 3rd рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди, рдЖрдкрдХреЛ рдХреНрд░рдо рдореЗрдВ рд╕рднреА рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ, рднрд▓реЗ рд╣реА рдЖрдкрдХреЛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред рдЗрд╕рд▓рд┐рдП, EnvironmentObjectрдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИ Viewред рдЙрдиреНрд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ, рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ Bindingред

@ рдкрд░реНрдпрд╛рд╡рд░рдг рд▓рдЧрднрдЧ рдПрдХ рдЬреИрд╕рд╛ рд╣реИред рдЕрд░реНрде рдореЗрдВ, рдпрд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдПрдХ рд╕реНрдерд┐рддрд┐ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдУрдПрд╕ред рдЗрд╕ рдЖрд╡рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░реАрди рдХреА рд╕реНрдерд┐рддрд┐ (рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдпрд╛ рдХреНрд╖реИрддрд┐рдЬ), рдПрдХ рдкреНрд░рдХрд╛рд╢ рдпрд╛ рдЕрдВрдзреЗрд░реЗ рд╡рд┐рд╖рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрджрд┐ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдЖрд╡рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рдХреЛрд░рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ:

 @Environment(\.managedObjectContext) var moc: NSManagedObjectContext 

рд╡реИрд╕реЗ, SwiftUI рдореЗрдВ CoreData рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХреА рдЧрдИ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ, рд╢рд╛рдпрдж, рдЕрдЧрд▓реА рдмрд╛рд░ред рдЗрд╕рд▓рд┐рдП рд▓реЗрдЦ рд╕рднреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдкрд░реЗ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдХрд╕реНрдЯрдо @PropertyWrapper


рдмрд╛рдИ рдПрдВрдб рд▓рд╛рд░реНрдЬ, PropertyWrapperрдпрд╣ рд╕реЗрдЯрд░ рдФрд░ рдЧреЗрдЯреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЙрд░реНрдЯрдХрдЯ рд╣реИ, рдПрдХ рд╣реА рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ property wrapperред рд░реИрдкрд░ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдХреЛ рд╣рдЯрд╛рдХрд░ рдФрд░ рдЧреЗрдЯреНрдЯрд░ {} рд╕реЗрдЯрд░ {} рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд┐рдЦрдХрд░ рдЖрдк рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╣рд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди ViewрдХреЛрдб рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдРрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ PropertyWrapperрдХрд╛рдо рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ UserDefaultsред

 @propertyWrapper struct UserDefault<T> { var key: String var initialValue: T var wrappedValue: T { set { UserDefaults.standard.set(newValue, forKey: key) } get { UserDefaults.standard.object(forKey: key) as? T ?? initialValue } } } 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рднрдВрдбрд╛рд░рдг рдореЗрдВ рдЖрджрд┐рдо рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ UserDefaultsред Apple рдЗрд╕ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЧрддрд┐ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдпрд╛ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдореГрддрд┐ рдореЗрдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╢ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЫреЛрд░реЛрдВ рдФрд░ рдЧрддрд┐-рдорд╛рдВрдЧ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЗрд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдк рдПрдХ рд╕реНрдЯрдм рдЯрд╛рдЗрдк (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдПрдиреНрдпреВрдорд░реЗрд╢рди) рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдерд┐рд░ рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ UserDefaultsрдХреЗрд╡рд▓ рдмрдирд╛рдП рдЧрдП рд░реИрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреЛрд░ рдХрд┐рдП рдЧрдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рд╣реИ :

 enum UserPreferences { @UserDefault(key: "isCheatModeEnabled", initialValue: false) static var isCheatModeEnabled: Bool @UserDefault(key: "highestScore", initialValue: 10000) static var highestScore: Int @UserDefault(key: "nickname", initialValue: "cloudstrife97") static var nickname: String } 

рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╣реА рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддрд░реНрдХ рдФрд░ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдФрд░ рд╕рднреА рдХрд╛рдо рд╣реБрдб рдХреЗ рддрд╣рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 UserPreferences.isCheatModeEnabled = true UserPreferences.highestScore = 25000 UserPreferences.nickname = "squallleonhartтАЭ 

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред

рдХрдВрдЯреЗрдирд░


рдЦреИрд░, рдореЗрд░реА рд╕реВрдЪреА рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЖрдЦрд┐рд░реА рдмрд╛рдд рдХрдВрдЯреЗрдирд░ рд╣реИред рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ bodyред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рдЖрдо рд╣реИрдВ Viewред рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ рдЬреЛ рдПрдХ рдХреНрд▓реЛрдЬрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВред рдпрд╣ рдХреНрд▓реЛрдЬрд░, рдпрджрд┐ рдЗрд╕рдХреА рдорджрдж рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ @ViewBuilderрдПрдХ рдирдП рддрд░реАрдХреЗ рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдпреЛрдЬрди рдХрд░рдХреЗ рд╕рднреА рджреГрд╢реНрдп рдХреНрд▓реЛрдЬрд░ (рд╕рд╛рдордЧреНрд░реА рдмреНрд▓реЙрдХ) рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрдВрдЧреЗред рдЗрд╕реА рд╕рдордп, рд╡рд┐рднрд┐рдиреНрди рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрдВрддреНрд░ рд╕реНрд╡рдпрдВ рдЕрд▓рдЧ рд╣реИрдВред VStackрд╕рд╛рдордЧреНрд░реА рддрддреНрд╡реЛрдВ рдХреЛ рд▓рдВрдмрд╡рдд, HStackрдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдФрд░ рдЗрддрдиреЗ рдкрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ рдПрдХ рд╕рдВрд╢реЛрдзрдХ рдХреА рддрд░рд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдВрдкреВрд░реНрдг рднреА рд╣реИContentрдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ Viewред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдирдП ViewрдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, HStack{Text(тАж)}рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ TupleView<Text, Image>ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ ViewрдХрдВрдЯреЗрдирд░ рд╕рд╣рд┐рдд рдХреЛрдИ рднреА рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╢рд░реАрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрд╛ рдХрд┐ Text(┬лa┬╗) Text(┬лb┬╗)рдЕрдВрджрд░ рдХреЗ рдмреАрдЪ рдХреЗ рдЫреЛрдЯреЗ рдЕрдВрддрд░ рдХреЛ рдХреИрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдП HStackред рдЬрдм рддрдХ рдореИрдВ рдЧрд▓рддреА рд╕реЗ рдШреЛрд╖рдгрд╛ рдХреЗ рдкреВрд░реНрдг рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рдареЛрдХрд░ рди рдЦрд╛ рдЧрдпрд╛, рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛ offset()рдФрд░ position()рд▓рд╛рдЗрдиреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдСрдлрд╕реЗрдЯ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХреА HStack:
HStack (рд░рд┐рдХреНрддрд┐:, рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ: рд╕рдВрджрд░реНрдн :)ред
рдмрд╕, рдкрд╣рд▓реЗ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдЧрд▓рддреА - рдкреВрд░реНрдг рд╕рд┐рдВрдЯреИрдХреНрд╕ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

foreach


рдЕрд▓рдЧ рд╕реЗ, рдпрд╣ рдмрд╛рдд рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ ForEachред рдпрд╣ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ forEach(тАж)ред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдКрдкрд░ рдХрд╣рд╛, рдпрд╣ ForEachрдПрдХ рдЕрдиреЛрдЦрд╛ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ View, рдЬреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рд╕рдВрдЧреНрд░рд╣ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╛рдиреАрдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдП рдЧрдП рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕реЗ ForEachрдХреБрдЫ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдЗрд╕ рдПрдХрд╛рдзрд┐рдХ рдЗрдХрд╛рдИ рдХреЛ рдХреИрд╕реЗ рд╕рдореВрд╣ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдП - рдЗрд╕реЗ рд▓рдВрдмрд╡рдд, рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ, рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реВрдЪреА рдореЗрдВ рд░рдЦрдХрд░ ( List)ред

ForEachрддреАрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ: рд╕рдВрдЧреНрд░рд╣ ( data: RandomAccesCollection), рд╕рдВрдЧреНрд░рд╣ рддрддреНрд╡ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдкрддрд╛ ( id: Hashable), рдФрд░ рд╕рд╛рдордЧреНрд░реА ( content: ()->Content)ред рддреАрд╕рд░рд╛ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдЪрд░реНрдЪрд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ: рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рдХреА рддрд░рд╣, рдпрд╣ ForEachрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ Content- рдЕрд░реНрдерд╛рдд рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯред рд▓реЗрдХрд┐рди рд╕рд╛рдзрд╛рд░рдг рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд╣рд╛рдВ contentрдЗрд╕рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╣ ForEachрдПрдХ рд╕рдВрдЧреНрд░рд╣ рддрддреНрд╡ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрдЬрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрдЧреНрд░рд╣ ForEachрдХрд┐рд╕реА рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ RandomAccesCollectionред рд╡рд┐рднрд┐рдиреНрди рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЙрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ sorted(by:)рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ RandomAccesCollectionред

ForEach- рдпрд╣ subViewрд╕рдВрдЪрд░рд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдПрдХ рд╕реЗрдЯ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ subViewрд╕рдВрдЧреНрд░рд╣ рдХреЗ рдХрд┐рд╕ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдХреМрди рд╕рд╛ рдЬреБрдбрд╝рд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдХреЗ Viewрдкрд╛рд╕ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП рдареАрдХ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрджрд┐ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рддрддреНрд╡ Hashableрд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреИрд╕реЗ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ id: \.selfред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рддрддреНрд╡ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВIdentifiable- рддрдм рджреВрд╕рд░рд╛ рддрд░реНрдХ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреА рдкрд╣рдЪрд╛рди рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдмрди рдЬрд╛рдПрдЧреА subViewред рдпрджрд┐ рдЖрдкрдХреА рд╡рд╕реНрддреБ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░реЙрдкреНрд╕ рд╣реИ рдЬреЛ рдЕрджреНрд╡рд┐рддреАрдпрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ Hashable, рддреЛ рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 ForEach(values, id: \.value){item in тАж} 

рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, valuesрд╡рд░реНрдЧ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ SomeObjectрдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ value: Intред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ ViewрдЖрдкрдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдПрдХ рддрддреНрд╡ рд╕реЗ рдЬреБрдбрд╝рд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЖрдкрдХреА рд╡рд╕реНрддреБ рдХреЗ рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред ViewрдЗрд╕реЗ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ (рд╕рдВрдЧреНрд░рд╣ рддрддреНрд╡) рдХреЗ рд╕рд╛рде 1 рд╕реЗ 1 рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ @BindingрдкреИрд░рд╛рдореАрдЯрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╣рд╛рдВ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реИ Viewред

рд╡реИрд╕реЗ, рд╕рдВрдЧреНрд░рд╣ рддрддреНрд╡реЛрдВ рдХреЗ рдПрдХ рдХреНрд░реЙрд▓ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рдирд╛ рдЬреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдпреЛрдЧреНрдп рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рднреА рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
 ForEach(keys.indices){ind in SomeView(key: self.keys[ind]) } 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдШрд╛рдд рдХрд╛ рдирд┐рд░реНрдорд╛рдг рддрддреНрд╡реЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрдирдХреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЫреЛрдЯреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдкрд░, рдпрд╣ рд╕рдВрднрд╡рддрдГ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕рдВрдЧреНрд░рд╣ рдХреЗ рддрддреНрд╡ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЙрд▓реНрдпреВрдорд┐рдирд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдпрд╛ JSON рдбреЗрдЯрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд╛рд╡рдзрд╛рдиреА рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХреНрдпрд╛ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИ

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ ред рд╡рд╣ рдмрд╣реБрдд рдореВрдбреА рд╣реИ, рдФрд░ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмреНрд▓реЙрдХ (рдпрд╛рдиреА, рд╡рд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдорд╛рдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 2 рдпрд╛ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ) рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрдЬрд░ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╕рднреА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдорд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рдЗрд╕ рддрд░рд╣ рдХреА рд╣реИрдХ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рдЬрд╛рддреА рд╣реИредContentForEachGroupe{}

рдмрд╕ рдЗрд╕ рдмрдВрдж рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред ViewBuilder рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдХреНрд▓реЛрдЬрд░ рдореЗрдВ рдЪрд░ рдШреЛрд╖рдгрд╛рдПрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ, рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рд╕рдВрд╢реЛрдзрдХ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдерд╛ .frame(size:)? рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕реА рд╡рдЬрд╣ рд╕реЗ рдмрдирд╛рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЗрди рдмрдЯрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдЯрди рдЖрдХрд╛рд░реЛрдВ рдХреА рдЧрдгрдирд╛ рдХреА (рдореИрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдЯреНрд░реЗрдЪрд┐рдВрдЧ рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рдерд╛, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрдЯрди рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдХрд╛рд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП)ред рдлрд╝рдВрдХреНрд╢рди CGSize рд▓реМрдЯрд╛, рдФрд░ рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдХрдИ рд╕реНрддрд░ рдЕрдВрджрд░ рдХреНрд░реЙрд▓ рдХрд┐рдП рдЧрдП рдереЗред рдпрджрд┐ рдПрдХ рдмрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рддреЛ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЪрд░ рдЖрдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗрдВ, рдФрд░ рдлрд┐рд░ рдХреЙрд▓ рдХрд░реЗрдВ.ftame(width: size.width, height: size.height)"рдореИрдВ рдРрд╕рд╛ рдХрд░реВрдВрдЧрд╛ред" рд▓реЗрдХрд┐рди рдРрд╕реА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореИрдВ рджреЛ рдмрд╛рд░ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ - рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рд╕реАрдорд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдВрд╢реЛрдзрдХ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред

рдХрд╕реНрдЯрдо рдХрдВрдЯреЗрдирд░ рджреГрд╢реНрдп


рдЦреИрд░, рдЬреИрд╕рд╛ рдХрд┐ рд╣реБрдЖ, рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдЕрдХреНрд╕рд░, "1: N" рдкреНрд░рдХрд╛рд░ рдХреА рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрдмрдВрдз рдХреЛ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рдХреНрд╡реЗрд░реА рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдмрджрд▓рдирд╛ dict: [KeyObject: [SomeObject]]рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдХреНрд╖рд╛ рдХреА рд╡рд╕реНрддреБрдПрдВ рд╢рдмреНрджрдХреЛрд╢ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИрдВ KeyObject(рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП Hashable), рдФрд░ рдорд╛рди рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд░рдгрд┐рдпрд╛рдБ рд╣реИрдВ - SomeObjectред

 class SomeObject: Identifiable{ let value: Int public let id: UUID = UUID() init(value: Int){ self.value = value } } class KeyObject: Hashable, Comparable{ var name: String init(name: String){ self.name = name } static func < (lhs: KeyObject, rhs: KeyObject) -> Bool { lhs.name < rhs.name } static func == (lhs: KeyObject, rhs: KeyObject) -> Bool { return lhs.name == rhs.name } func hash(into hasher: inout Hasher) { hasher.combine(name) } } 

рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХреЛ рд╕рдореВрд╣реАрдХрд░рдг рдХреЗ рд╕рд╛рде рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рдРрд╕реЗ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рджреГрд╢реНрдп рдореЗрдВ рд╕рднреА рдХреЛрдб рдХреА рдирдХрд▓ рди рдХрд░реЗрдВред рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕рдореВрд╣ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдореЗрдВ рдЬреЗрдиреЗрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рджреГрд╢реНрдп рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдмрдирд╛рдпрд╛, рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рдХрдВрдЯреЗрдирд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░:

 struct TreeView<K: Hashable, V: Identifiable, KeyContent, ValueContent>: View where K: Comparable, KeyContent: View, ValueContent: View{ let data: [K: [V]] let keyContent: (K)->KeyContent let valueContent: (V)->ValueContent var body: some View{ VStack(alignment: .leading, spacing: 0){ ForEach(data.keys.sorted(), id: \.self){(key: K) in VStack(alignment: .trailing, spacing: 0){ self.keyContent(key) ForEach(self.data[key]!){(value: V) in self.valueContent(value) } } } } } } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдВрдЯреЗрдирд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ [K: [V]](рдЬрд╣рд╛рдВ Kрд╢рдмреНрдж рдХреБрдВрдЬреА рдСрдмреНрдЬреЗрдХреНрдЯ VрдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ , рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢рдмреНрджрдХреЛрд╢ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ), рдФрд░ рджреЛ рд╕рдВрджрд░реНрдн: рд╢рдмреНрджрдХреЛрд╢ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рджреВрд╕рд░рд╛ рдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ ViewBuilder-рдХрд╕реНрдЯрдо рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдорд┐рд▓реЗ (рд╢рд╛рдпрдж рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдмрд╕ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ), рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдорд╛рдирдХ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ForEachред рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЗрдирдкреБрдЯ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ RandomAccessCollection, рдФрд░ dict.keysрдпрд╣ рдирд╣реАрдВ рд╣реИ, рд╣рдореЗрдВ рдЫрдВрдЯрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ ComparableрдХреЗ KeyObjectред

рдореИрдВрдиреЗ рджреЛ рдиреЗрд╕реНрдЯреЗрдб ForEachрдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ ред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рд╕рдВрдЧреНрд░рд╣ рдЖрдЗрдЯрдо рдХреЗ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ (\.self) рдкреНрд░рддреНрдпреЗрдХ рдиреЗрд╕реНрдЯреЗрдб рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ Viewред рдореИрдВ рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рд╢рдмреНрджрдХреЛрд╢ рдХреБрдВрдЬреА рдХреЛ рд╡реИрд╕реЗ рднреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП Hashableред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдХрдХреНрд╖рд╛ рдореЗрдВ SomeObjectрдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛Identifiableред рдЗрд╕рдиреЗ рдореБрдЭреЗ рдПрдХ рд╕рдВрдЪрд╛рд░ рдХреБрдВрдЬреА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА - рдЖрдИрдбреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдИрдбреА рдХрд╣реАрдВ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реИред рд╣рд░ рдмрд╛рд░ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЪрд╛рд╣реЗ рд╡рд╣ рдХреЛрдб рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рд╣реЛ, рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП - рдПрдХ рдирдИ рдЖрдИрдбреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡рд╕реНрддреБ рдХреЗ рдЬреАрд╡рди рднрд░ рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ рдЕрд░реНрдерд╛рддреН рд╕рддреНрд░, рдФрд░ рдпрд╣ рдЗрд╕ рдЖрдИрдбреА рдХреЗ рддрд╣рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдФрд░ рдЕрдЧрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рдЖрдк рдЖрд╡реЗрджрди рдЦреЛрд▓рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдХреА рдПрдХ рдЕрд▓рдЧ рдЖрдИрдбреА рд╣реЛрдЧреА - рдХреБрдЫ рднреА рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рдореБрдЦ рдлрд╝реАрд▓реНрдб рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╕ рдЖрдИрдбреА рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рдорд░реНрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ForEachред

рд╣рдорд╛рд░реЗ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 struct ContentView: View { let dict: [KeyObject: [SomeObject]] = [ KeyObject(name: "1st group") : [SomeObject(value: 1), SomeObject(value: 2), SomeObject(value: 3)], KeyObject(name: "2nd group") : [SomeObject(value: 4), SomeObject(value: 5), SomeObject(value: 6)], KeyObject(name: "3rd group") : [SomeObject(value: 7), SomeObject(value: 8), SomeObject(value: 9)] ] var body: some View { TreeView(data: dict, keyContent: {keyObject in Text("the key is: \(keyObject.name)") } ){valueObject in Text("value: \(valueObject.value)") } } } 

рдФрд░ рдХреИрдирд╡рд╕ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд░рд┐рдгрд╛рдо:



рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдП


рдЕрднреА рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдореИрдВ рдЙрди рд╕рднреА рд░реЗрдХ рдХреЛ рднреА рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬрд┐рди рдкрд░ рдореИрдВрдиреЗ рдХрджрдо рд░рдЦрд╛, CoreDataрд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА рдХрд┐ рдХреЗрд╡рд▓ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдореЗрдВ рдЗрддрдирд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛ рдФрд░ рд▓реЗрдЦ рдмрд╣реБрдд рд╣реА рдЪрдордХрджрд╛рд░ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдореИрдВ рд▓реЗрдЦ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

Source: https://habr.com/ru/post/hi485548/


All Articles