IOS рдХреЗ рд▓рд┐рдП рдХреЛрд░ рдбреЗрдЯрд╛ред рдЕрдзреНрдпрд╛рдп рд╕рдВрдЦреНрдпрд╛ 1ред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рднрд╛рдЧ

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



рд╕рд╛рдордЧреНрд░реА:



рдиреАрдЪреЗ рдЙрддрд░ рд░рд╣рд╛ рд╣реИ


рдХреЛрд░ рдбреЗрдЯрд╛ рдХреНрдпрд╛ рд╣реИ?

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

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

рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдХреЛрд░ рдбреЗрдЯрд╛ SQLite рдЬреИрд╕реЗ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреЛрд░ рдбреЗрдЯрд╛ рдПрдХ рдбреАрдмреАрдПрдордПрд╕ рдирд╣реАрдВ рд╣реИред рд╕рдЪ рдореЗрдВ, рдХреЛрд░ рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЛрд░ рдбреЗрдЯрд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреА рддрд░рд╣ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреБрдЫ рдУрдЖрд░рдПрдо рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдХреЛрд░ рдбреЗрдЯрд╛ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рдбреЗрдЯрд╛ рд░реИрдкрд░ / рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕рдВрд╕реНрдерд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзреЛрдВ (рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрдмрдВрдз), рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдПрдХ рдРрд╕реЗ рд░реВрдк рдореЗрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреНрд░рд╛рдл рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ
рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗрд╡рд▓ рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ 10.4 рдЯрд╛рдЗрдЧрд░ рдФрд░ рдЖрдИрдлреЛрди рдПрд╕рдбреАрдХреЗ 3.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ


IOS рд╕рдВрдЧреНрд░рд╣рдг рдЗрддрд┐рд╣рд╛рд╕

рдЬрд┐рд╕ рддрд░рд╣ рд╣рдореЗрдВ Pixar рджреНрд╡рд╛рд░рд╛ рд░рд┐рд▓реАрдЬрд╝ рдХреА рдЧрдИ рдПрдирд┐рдореЗрдЯреЗрдб рдлрд┐рд▓реНрдореЛрдВ рдХреЗ рд▓рд┐рдП NeXT рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрд╕реА рддрд░рд╣ рд╣рдореЗрдВ рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрд░ рдбреЗрдЯрд╛ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ (EOF) рдирд╛рдордХ рддрдХрдиреАрдХ рд╕реЗ рдкреИрджрд╛ рд╣реБрдЖ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖред
2005 рдХреА рд╢реБрд░реБрдЖрдд рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ 10.4 (рдЯрд╛рдЗрдЧрд░) рдХреЗ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рд╛рде рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдИрдлреЛрди рдХреЗрд╡рд▓ 3.0 рд╡рд░реНрдЬрди рдХреЗ рдмрд╛рдж рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
IPhone рдкрд░ рдХреЛрд░ рдбреЗрдЯрд╛ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдПрдХ рдХрдард┐рди рд╕рдордп рдерд╛ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
1) рдЙрди рдЧреБрдгреЛрдВ рдХреА рд╕реВрдЪреА, рдЬрд┐рдирдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
2) рдбреЗрдЯрд╛ рдХреНрд░рдорд╛рдВрдХрди рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рднрдВрдбрд╛рд░рдг (NSCoding рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)
3) SQLite рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕
4) рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ

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

рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдирд╛

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

рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЛрд░ рдШрдЯрдХреЛрдВ рдХреЛ рд╕рдордЭрдирд╛

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

рдПрдХ рдХреЛрд░ рдбреЗрдЯрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ рдХрднреА рднреА рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рднрдВрдбрд╛рд░рдг рд╕реЗ рджреВрд░ рд╣реЛ рдЬрд╛рдУ, рднрдВрдбрд╛рд░рдг рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ, рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЛ! рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ (рдПрдХ XML рдлрд╝рд╛рдЗрд▓ рдереА, рд▓реЗрдХрд┐рди SQLite рдмрди рдЧрдИ рдереА)ред
рдРрд╕реА рд╡рд╕реНрддреБрдПрдБ рдЬреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдХреЛрд░ рдбреЗрдЯрд╛) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ NSManagedObject рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ / рдЧреБрдгреЛрдВ рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣, рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рдРрд╕реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдРрд╕рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдореМрдЬреВрдж рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн (рдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдВрджрд░реНрдн) рдпрд╛ рдмрд╕ рд╕рдВрджрд░реНрдн рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рд╡рд╛рддрд╛рд╡рд░рдг рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдерд┐рдд рд╣реИ, рди рдХреЗрд╡рд▓ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдЕрд╡рд╕реНрдерд╛рдПрдВ (рдРрд╕реА рд╡рд╕реНрддреБрдПрдВ рдЬреЛ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕ рдкрд░ рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред
NSManagedObjectContext рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣рдореЗрд╢рд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдорддреМрд░ рдкрд░, NSManagedObjectContext рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреА рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╕рдВрдкрддреНрддрд┐ рд╣реИред рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмрд┐рдирд╛, NSManagedObjectContext рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд┐рдирд╛, рдЖрдк рдмрд╕ рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ

Xcode рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдорд╛рд╕реНрдЯрд░-рдбрд┐рдЯреЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ:
рдЫрд╡рд┐

рдЦреЗрддреЛрдВ рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рднрд░реЗрдВ:
рдЫрд╡рд┐

рдФрд░ рдирд┐рд░реНрдорд╛рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рджреЗрдЦреЗрдВрдЧреЗ:
рдЫрд╡рд┐

рд╣рдордиреЗ рдЕрдкрдирд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдпрд╣ рд╕рдордЭрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдХреНрдпрд╛ рд╣реИ, рдЖрдЗрдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЖрд╡реЗрджрди рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред
"рд░рди" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
рдЫрд╡рд┐

"+" рдмрдЯрди рдХреЛ рдХрдИ рдмрд╛рд░ рджрдмрд╛рдПрдВ рдФрд░ рд╕рдордп рдХреЗ рд╕рд╛рде рд╕реВрдЪреА рдореЗрдВ рдХрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред
рдЫрд╡рд┐

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

рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ

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

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ MasterViewController рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NSManagedObjectContext рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреА рд╣реИред рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ MasterViewController рдЖрд╡реЗрджрди рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if(self){ self.title = NSLocalizedString(@"Master", @"Master"); id delegate = [[UIApplication sharedApplication] delegate]; self.managedObjectContext = [delegate managedObjectContext]; } return self; } 


BasicApplication.xcdatamodel рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред рдПрдХ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЛрд░ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдиреАрдВрд╡ рд╣реИред
рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗрд╡рд▓ рдПрдХ рдЗрдХрд╛рдИ - рдШрдЯрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдИрд╡реЗрдВрдЯ рдЗрдХрд╛рдИ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЧреБрдг (рдлрд╝реАрд▓реНрдб, рд╡рд┐рд╢реЗрд╖рддрд╛) - рдкреНрд░рдХрд╛рд░ рджрд┐рдирд╛рдВрдХ рдХрд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╢рд╛рдорд┐рд▓ рд╣реИред


NSManagedObject рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдЗрд╡реЗрдВрдЯ рдЗрдХрд╛рдИ, рдЬрд┐рд╕реЗ рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╕рднреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЗрдХрд╛рдИ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдо NSManagedObject рдкреНрд░рдХрд╛рд░ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВред

рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ / рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐

рдЕрдЧрд▓реА рдХрдХреНрд╖рд╛ рдЬреЛ рд╣рдореЗрдВ рд░реБрдЪрддреА рд╣реИ, рд╡рд╣ MasterViewController рд╣реИред рдЗрд╕рдХреА рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рджреЛ рдЧреБрдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ рдЬрд┐рди рдкрд░ рд╣рдо рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ:
 @property (nonatomic, strong) NSFetchedResultsController *fetchedResultsController; @property (nonatomic, strong) NSManagedObjectContext *managedObjectContext; 

NSFetchedResultsController рд╕реНрдЯреЛрд░реЗрдЬ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХреЛрд░ рдбреЗрдЯрд╛ рдврд╛рдВрдЪреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИред
NSManagedObjectContext рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА NSManagedObject рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

MasterViewController.m рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ MasterViewController рд╡рд░реНрдЧ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред MasterVIewController рдХреНрд▓рд╛рд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЧреЗрдЯреНрдЯрд░ fetchedResultsController рд╣реИ, рдЬреЛ рднрдВрдбрд╛рд░рдг рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░реНрд╡-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред

рдбреЗрдЯрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рдмрдирд╛рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рдХрджрдо рдПрдХ рдХреНрд╡реЗрд░реА рдмрдирд╛рдирд╛ рд╣реИ:
 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:self.managedObjectContext]; [fetchRequest setEntity:entity]; 

рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо NSSortDescriptor рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред NSSortDescriptor рд╕реЙрд░реНрдЯ рдлрд╝реАрд▓реНрдб рдФрд░ рд╕реЙрд░реНрдЯ рдкреНрд░рдХрд╛рд░ (рдЖрд░реЛрд╣реА рдпрд╛ рдЕрд╡рд░реЛрд╣реА) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рд░рд┐рдХреЙрд░реНрдб рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп рдХреЛ рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ:
 NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO]; NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; [fetchRequest setSortDescriptors:sortDescriptors]; 

рдЕрдиреБрд░реЛрдз рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо NSFetchedResultsController рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ NSFetchedResultsController MasterVIewController рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рднрдВрдбрд╛рд░рдг рдбреЗрдЯрд╛ рдХреА рд╕реНрдерд┐рддрд┐ (рд╣рдЯрд╛рдПрдВ, рдЬреЛрдбрд╝реЗрдВ, рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рдЖрджрд┐) рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореВрд▓ рд░реВрдк рд╕реЗ UITableView рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рд╣рдо рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрджрд░реНрдн рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рдзрд┐ рд╕реЗ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ NSFetchedResultsController рдХрд╛ рдкреВрд░рд╛ рд▓рд╛рдн рдирд╣реАрдВ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред
NSFetchedResultsController рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдмрдирд╛рдПрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:
 NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Master"]; aFetchedResultsController.delegate = self; self.fetchedResultsController = aFetchedResultsController; 


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


рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рд╡рд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реИ:
 NSError *error = nil; if(![self.fetchedResultsController performFetch:&error]){ NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } 

рдиреАрдЪреЗ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
 - (NSFetchedResultsController *)fetchedResultsController { if (_fetchedResultsController != nil) return _fetchedResultsController; NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:self.managedObjectContext]; [fetchRequest setEntity:entity]; [fetchRequest setFetchBatchSize:20]; NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO]; NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; [fetchRequest setSortDescriptors:sortDescriptors]; NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Master"]; aFetchedResultsController.delegate = self; self.fetchedResultsController = aFetchedResultsController; NSError *error = nil; if(![self.fetchedResultsController performFetch:&error]){ NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } return __fetchedResultsController; } 

NSFetchedResultsController рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ NSManagedObject рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреА рддрд░рд╣ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдореЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП NSArray рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреБрдг рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
MasterVIewController рдХреНрд▓рд╛рд╕, рдЬреЛ UITableViewController рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рднреА рдХрд░рддреА рд╣реИ, рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NSFetchedResultsController рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдбрд╛рд▓реЗрдВ

InsertNewObject рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░: рд╡рд┐рдзрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдЧреА рдХрд┐ рдирдИ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рднрдВрдбрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред NSManagedObjects рдПрдХ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рд╕реЗ рдПрдХ рдЗрдХрд╛рдИ рд╡рд┐рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрджрд░реНрдн (рдкрд░реНрдпрд╛рд╡рд░рдг) рдореЗрдВ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдирдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рдЪрд░рдг рдЙрд╕ рд╕рдВрджрд░реНрдн рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:
 NSManagedObjectContext *managedObjectContext = [self.fetchedResultsController managedObjectContext]; NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity]; 

NSManagedObject рдмрдирд╛рдПрдБ:
 NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntity:[entity name] inManagedObjectContext:context]; [newManagedObject setValue:[NSDate date] forKey:@"timeStamp"]; 

рдЕрдВрддрд┐рдо рдЪрд░рдг рдЬреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡рд╣ рдЙрд╕ рд╕рдВрджрд░реНрдн рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рдИ рдЧрдИ рдереАред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм рдЖрдк рд╕рдВрджрд░реНрдн рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рдкрд╣рд▓реЗ рд╕рд╣реЗрдЬреЗ рдирд╣реАрдВ рдЧрдП рдереЗ, рд╕рд╣реЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗред
 NSError *error = nil; if(![context save:&error]){ NSLog(@"Unresolved error: %@, %@", error, [error userInfo]); abort(); } 

рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдЬреЛрдбрд╝рдиреЗ рдХреА рдкреВрд░реА рд╡рд┐рдзрд┐ рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд╣реИ:
 - (void)insertNewObject { NSManagedObjectContext *managedObjectContext = [self.fetchedResultsController managedObjectContext]; NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity]; NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; [newManagedObject setValue:[NSDate date] forKey:@"timeStamp"]; NSError *error = nil; if(![context save:&error]){ NSLog(@"Unresolved error: %@, %@", error, [error userInfo]); abort(); } } 


рд╕рдВрджрд░реНрдн (рдкрд░реНрдпрд╛рд╡рд░рдг) рдХрд╛ рдкреНрд░рд╛рд░рдВрдн

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рдо рд╕рдм рдХреБрдЫ рд╣реИ рдХрд┐ рдПрдХ рд╕рдВрджрд░реНрдн рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдмрд╣реБрдд рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмрд┐рдирд╛ рдЬрд┐рд╕рдореЗрдВ рд╡рд╕реНрддреБ рдореМрдЬреВрдж рд╣реИ рдФрд░ рд░рд╣рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдХреЛрд░ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рддреАрди рдЧреБрдг:
 @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рднреА рддреАрди рдЧреБрдг рдЖрд╕рд╛рдиреА рд╕реЗ рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рд╕реЗрдЯ рди рд╣реЛ рд╕рдХреЗрдВред BasicApplicationAppDelegate.m рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рддреАрди рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдЧреЗрдЯрд░реНрд╕ рд╣реИрдВред

рдкреНрд░рдмрдВрдзрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓:
 - (NSManagedObjectModel *)managedObjectModel { if(_managedObjectModel != nil){ return _managedObjectModel; } NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"BasicApplication" withExtension:@"momd"]; _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modeURL]; return _managedObjectModel; } 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рднрдВрдбрд╛рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдмрдирд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрд░ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ SQLite рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред
 - (NSPersistentStoreCoordinator *)persistentStoreCoordinator { if(_persistentStoreCoordinator != nil){ return _persistentStoreCoordinator; } NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"BasicApplication.sqlite"]; NSError* error = nil; _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; if(![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]){ NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } return _persistentStoreCoordinator; } 


рдПрдХ рд╕рдВрджрд░реНрдн (рдкрд░реНрдпрд╛рд╡рд░рдг) рдмрдирд╛рдПрдБ:
 - (NSManagedObjectContext *)managedObjectContext { if(_managedObjectContext != nil){ return _managedObjectContext; } NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; if(coordinator != nil){ _managedObjectContext = [[NSManagedObjectContext alloc] init]; [_managedObjectContext setPersistentStoreCoordinator:coordinator]; } return _managedObjectContext; } 


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


рддрдВрддреНрд░ рддрдм рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ: didFinishLaunchingWithOptions рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; MasterViewController *controller = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil]; self.navigationController = [[UINavigationController alloc] initWithRootViewController:controller]; self.window.rootViewController = self.navigationController; [self.window makeKeyAndVisible]; return YES; } 


рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдкреНрд░рдмрдВрдзрд┐рддObjectContext рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЧрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛, рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ рд╣реИ:
- (NSManagedObjectContext *) рдкреНрд░рдмрдВрдзрд┐рддрдСрдмреНрдЬреЗрдХреНрдЯрдХреЛрдЯреЗрдХреНрд╕реНрдЯ рдХреЙрд▓
- (NSPersistentStoreCoordinator *) persistentStoreCoordinator, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ
- (NSManagedObjectModel *) рдкреНрд░рдмрдВрдзрд┐рддObjectModelред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, ManageObjectContext рдЧреЗрдЯрдЯрд░ рд╡рд┐рдзрд┐ рдкрд░ рдХреЙрд▓ рдХреЛрд░ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рдВрдкреВрд░реНрдг рд╕реНрдЯреИрдХ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЛ рдЕрд▓рд░реНрдЯ рдХрд░рддрд╛ рд╣реИред

рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЛрд░ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдирд╛

рдЗрд╕реЗ рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
  1. рдХреЛрд░ рдбреЗрдЯрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреЛрдбрд╝рдирд╛
  2. рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдмрдирд╛рдирд╛
  3. рд╕рдВрджрд░реНрдн (рдкрд░реНрдпрд╛рд╡рд░рдг) рдХрд╛ рдкреНрд░рд╛рд░рдВрдн


рдХреЛрд░ рдбреЗрдЯрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреЛрдбрд╝рдирд╛

рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдорд╛рдирдХ рдЪреМрдЦрдЯреЗ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рд╕реНрд╡рдЪреНрдЫ" рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ рдФрд░ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдХреНрд╕рд░ рджреЗрдЦреЗрдВрдЧреЗ:


рдирдП рдврд╛рдВрдЪреЗ рдХрд╣рд╛рдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ:


рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдорд╡рд░реНрдХ рдЪреБрдиреЗрдВ:


рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдмрдирд╛рдирд╛

рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рдХрд┐рд╕реА рднреА рдХреЛрд░ рдбреЗрдЯрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдЙрди рд╕рднреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдХреЛрд░ рдбреЗрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП: рдлрд╝рд╛рдЗрд▓ -> рдирдпрд╛ -> рдирдИ рдлрд╝рд╛рдЗрд▓


рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ MyModel.xcdatamodeld рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:


рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рд╕рдВрдкрд╛рджрди (рдмрдирд╛рдиреЗ) рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛ рдЦреБрд▓ рдЬрд╛рдПрдЧреАред


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


рд╕рдВрджрд░реНрдн (рдкрд░реНрдпрд╛рд╡рд░рдг) рдХрд╛ рдкреНрд░рд╛рд░рдВрдн

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

DemoAppAppDelegate.h
 #import <UIKit/UIKit.h> #import <CoreData/CoreData.h> @interface DemoAppDelegate : UIResponder <UIApplicationDelegate> { } @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) UINavigationController *navigationController; @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; - (void)saveContext; - (NSURL *)applicationsDocumentsDirectory; @end 


* .M рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рдПрдВ DemoAppAppDelegate рдФрд░ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓рд┐рдЦреЗрдВ:
 @synthesize managedObjectContext = _managedObjectContext; @synthesize managedObjectModel = _managedObjectModel; @synthesize persistentStoreCoordinator = _persistentStoreCoordinator; 


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд╣ рдХреЛрдб рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдореЙрдбрд▓, рднрдВрдбрд╛рд░рдг рдФрд░ рд╕рдВрджрд░реНрдн рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред
 - (NSManagedObjectModel *)managedObjectModel { if (_managedObjectModel != nil){ return _managedObjectModel; } NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyModel" withExtension:@"momd"]; _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modeURL]; return _managedObjectModel; } 


 - (NSPersistentStoreCoordinator *)persistentStoreCoordinator { if(_persistentStoreCoordinator != nil){ return _persistentStoreCoordinator; } NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"DemoApp.sqlite"]; NSError *error = nil; _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]]; if(![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error&error]){ NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } return _persistentStoreCoordinator; } 


 - (NSManagedObjectContext *)managedObjectContext { if(_managedObjectContext != nil){ return _managedObjectContext; } NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; if(coordinator != nil){ _managedObjectContext = [[NSManagedObjectContext alloc] init]; [_managedObjectContext setPersistentStoreCoordinator:coordinator]; } return _managedObjectContext; } 


рд╡реЗ рддрд░реАрдХреЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ:
 - (NSURL *)applicationDocumentsDirectory{ return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; } 

 - (void)saveContext { NSError *error = nil; NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; if(managedObjectContext != nil) { if([managedObjectContext hasChanges] && ![managedObjectContext save:&error]){ NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } } } 

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

рдкрд┐рдЫрд▓рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб:
 NSManagedObjectContext *context = [self managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyData" inManagedObjectContext:context]; [request setEntity:entity]; NSArray *results = [context executeFetchRequest:request error:nil]; 


рдлрд┐рд░ рд╣рдо рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕рдВрдкреВрд░реНрдг рд╕рд░рдгреА рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
 for(NSManagedObject *object in results){ NSLog(@"Found %@", [object valueForKey:@"myAttribute"]; } 

рдПрдХ рдирдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕рд╣реЗрдЬреЗрдВ:
 NSString *launchTitle = [NSString stringWithFormat:@"launch %d", [results count]]; NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; [object setValue:launchTitle forKey:@"myAttribute"]; [self saveContext]; NSLog(@"Added : %@", launchTitle); 

рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
 2011тАУ02-25 05:13:23.783 DemoApp[2299:207] Added: launch 0 

рджреВрд╕рд░реЗ рд░рди рдХреЗ рдмрд╛рдж:
 2011тАУ02-25 05:15:48.883 DemoApp[2372:207] Found launch 0 2011тАУ02-25 05:15:48.889 DemoApp[2372:207] Added: launch 1 


рдкреВрд░реА рд╡рд┐рдзрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSManagedObjectContext *context = [self managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entytyForName:@"MyData" inManagedObjectContext:context]; [request setEntity:entity]; NSArray *results = [context executeFetchRequest:request error:nil]; for(NSManagedObject *object in results){ NSLog(@"Found %@", [object valueForKey:@"myAttribute"]); } NSString *launchTitle = [NSString stringWithFormat:@"launch %d", [results count]]; NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; [object setValue:launchTitle forKey:@"myAttribute"]; [self saveContext]; NSLog(@"Added : %@", launchTitle); [self.window makeKeyAndVisible]; return YES; } 


рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ

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

рдХреНрдпрд╛ рддрдмрд╛рджрд▓реЛрдВ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ?

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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


All Articles