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



рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡реЗрджрди рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рджреАрд╡рд╛рд░реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрдкрдирд╛ рд╕рд┐рд░ рдкреАрдЯрдирд╛ рдкрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЯреНрд░реИрдХреНрдЯрд░ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреБрдЫ рд▓реЗрдЦ рд╣реИрдВ (рдЬреЛ рдореИрдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╣реВрдВ)ред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдХрдореА рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрджрд┐ рдкреНрд░рд╢рдВрд╕рд╛ рдХреА рд╕рдореАрдХреНрд╖рд╛ рд╣реЛрдЧреА рддреЛ рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред рдФрд░ рддреБрд░рдВрдд рдореИрдВрдиреЗ рдЪреЗрддрд╛рд╡рдиреА рджреА рдХрд┐ рдореИрдВ рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЛ рдПрдХрджрдо рд╕рд╣реА рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реВрдВред рдЕрдЪреНрдЫрд╛ рдареАрдХ рд╣реИ, рдЪрд▓рд┐рдП!
рдкрд░реНрдпрд╛рд╡рд░рдг рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛
рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рдЦрд╕рдЦрд╕ тАЛтАЛрдЦрд░реАрджреЗрдВред рдмреЗрд╢рдХ, рд╣реИрдХрд┐рдВрдЯреЛрд╢ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдирд╣реАрдВ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдПрдХ рдпреЛрдЧреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЕрдЧрд░ рд▓реЛрд╣реЗ рдХреА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдЕрдЧрд▓рд╛, рдпрд╣рд╛рдВ рд╕реЗ Xcode (рдЖрдИрдбреАрдИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ) рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:
developer.apple.com/xcode (рдЖрдИрдбреАрдИ рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░, рдбреАрдмрдЧрд░, рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдФрд░ рдЖрдИрдлреЛрди рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдорд┐рд▓рддрд╛ рд╣реИ)ред рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВред
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, Xcode рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░реЗрдЧрд╛, "рдирдпрд╛ Xcode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ" рдЪреБрдиреЗрдВ:

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

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (ActiveTable) рдФрд░ рдЕрдиреНрдп рдмрдХрд╡рд╛рд╕ рдХреЗ рдирд╛рдо рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ; рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдЖрдк рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
habrahabr.ru/post/131128 ):

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

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

рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "iOS рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░" рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд░рди" рдмрдЯрди рд╣реИ, рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рдХреЗ рдиреАрдЪреЗ:
- AppDelegate.h / AppDelegate.m - рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ;
- MainStoryboard - рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓;
- ViewController.h / ViewController.m - рд╣рдорд╛рд░реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджреГрд╢реНрдп рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди ViewController рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рдХрд╣реВрдВрдЧрд╛ред рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА (рдмрд╛рдПрдБ рдкреИрдирд▓) рдореЗрдВ MainStoryboard-ViewController рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджрд╛рд╣рд┐рдиреЗ рдкреИрдирд▓ рдореЗрдВ "рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░" рдЯреИрдм рдЪреБрдиреЗрдВ, рдлрд┐рд░ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ "рдХрд╕реНрдЯрдо рдХреНрд▓рд╛рд╕-рдХреНрд▓рд╛рд╕" рдореЗрдВ рдХрдВрдЯреНрд░реЛрд▓ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ "рд╡реНрдпреВ рдХреНрд▓рд╛рд╕ рдХрдВрдЯреНрд░реЛрд▓ рдХреНрд▓рд╛рд╕" рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред ViewController.h / ViewController.m:

рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдирд╛ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрдХреНрд▓рд╛рдЗрдЯ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛
рдареАрдХ рд╣реИ, рддреЛ рдПрдХ рд╕рд╛рдЗрдХреНрд▓рд╛рдЗрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ (рдУрд╣ рд╣рд╛рдВ, рдпрд╣ рдореБрдЭреЗ рдкрд╛рдЧрд▓ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдореИрдХ рдУрдПрд╕ ubuntu рдХреА рддрд░рд╣ рд╣реИ, рдмрд╕ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдмреЗрд╣рддрд░!), рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдПрдВ (рддреБрд░рдВрдд рдПрдХ рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВ рдФрд░ рднрд░реЗрдВ рдЙрд╕рдХрд╛ рдбреЗрдЯрд╛):
$ cd ~/Documents/Projects/ActiveTable/ActiveTable $ sqlite3 Base.db sqlite> create table animals (id integer primary key, name text); sqlite> insert into animals(name) values('Cat'); sqlite> insert into animals(name) values('Dog'); sqlite> insert into animals(name) values('Horse'); sqlite> .quit
рдЖрдзрд╛рд░ рддреИрдпрд╛рд░ рд╣реИред рдЕрдм рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВ:

рд╕рдВрд╡рд╛рдж рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ Base.db. рдЕрдм libsqlite3.0.dylib рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдмрд╛рдИрдВ рдУрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рдХреА рдЬрдбрд╝) -рдЯрд╛рд░реНрдЧреЗрдЯреНрд╕-рдПрдХреНрдЯрд┐рд╡рдЯреЗрдмрд▓-рдмрд┐рд▓реНрдб рдЪрд░рдгреЛрдВ-рд▓рд┐рдВрдХ рдмрд╛рдЗрдирд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде, рдкреНрд▓рд╕ рд╕рд╛рдЗрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ libsqlite3.0.dylib рдЦреЛрдЬреЗрдВред

рдЕрдм рдзреНрдпрд╛рди, рдПрдХ рдФрд░ рдмрд╛рддред рдпрджрд┐ рдЖрдк рд╕рдордЭрджрд╛рд░ рдЖрд╡рд░рдг рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддреЛ sqlite3 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╕рдкрдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рд╡рд╣рд╛рдБ рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рдФрд░ рдмрд╣реБрдд рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд╡рд╛рд▓рд╛ FMDB рдкреБрд╕реНрддрдХрд╛рд▓рдп (https://github.com/ccgus/fmdb) рд╣реИред рдЗрд╕ рдЪрдорддреНрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднреА рд╣реИ
www.icodeblog.com/2011/11/04/simple-sqlite-database-interaction-use-fmdb ред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдЧрд░ Git рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдпрд╣рд╛рдБ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
code.google.com/p/git-osx-installer ред рд╣рдо рдЕрдкрдиреЗ рдЖрдк рдХреЛ FMDB (рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ) рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВ:
$ git clone https://github.com/ccgus/fmdb
рдЗрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП fmdb рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝реЗрдВ, рдЬреИрд╕реЗ Base.db. рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рд╕реЗ fmdb / src / main.m рдХреЛ рдвреВрдВрдврдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ (рдпрд╣ FMDB рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рд╣реИ)ред рдЦреИрд░, рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдо рдкреЙрдбрдирд╛рдХреЛрдбрд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! :)
TableView рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рд╢реЛрдзрди
рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдПрдХ TableView рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрдирд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдкрд░ рдЬрд╛рдПрдВ, рдЯреЗрдмрд▓ рд╡реНрдпреВ рд╕реНрдкрд╛рдЗрдХ рдореЗрдВ рд╕рдмрд╕реЗ рдиреАрдЪреЗ рджрд╛рд╣рд┐рдиреЗ рдкреИрдирд▓ рдореЗрдВ рдЦреЛрдЬреЗрдВ

рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ ViewController рдкрд░ рдЦреАрдВрдЪреЗрдВ:

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЯреЗрдмрд▓рд╡реНрдпреВ рд╣реИред рдЕрдм рд╣рдореЗрдВ рдХрд┐рд╕реА рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдЯреЗрдмрд▓ рд╡реНрдпреВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рджрд╛рдИрдВ рдУрд░ рдкреИрдирд▓ рдореЗрдВ "рдХрдиреЗрдХреНрд╢рдВрд╕ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░" рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдорд╛рд░реНрдХрд░ рдХреЛ "рдХрдВрдЯреНрд░реЛрд▓рд░" рдХреЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рдХрдВрдЯреНрд░реЛрд▓рд░ (рдЬреЛ рдХрд┐ рд╡реНрдпреВрдХрдВрдЯреНрд░реЛрд▓рд░ рд╣реИ) рдХреЗ рдЖрдЗрдХрди рдкрд░ рдЦреАрдВрдЪреЗрдВ:

рд╣рдо рдЗрд╕реЗ "dataSource" рдХреЗ рд▓рд┐рдП рднреА рдХрд░рддреЗ рд╣реИрдВред рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдм TableView рдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЙрд╕реЗ рдХрд┐рд╕ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
ViewController (ViewController.h) рд╡рд░реНрдЧ рдореЗрдВ, рд╣рдо рддрд╛рд▓рд┐рдХрд╛ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╖реЗрддреНрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
@interface ViewController : UIViewController { NSMutableArray *_items; }
ViewController (ViewController.m) рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдФрд░ рджреГрд╢реНрдп рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
- (void)viewDidLoad { [super viewDidLoad]; _items = [[NSMutableArray alloc] init]; [self loadItems]; } - (void)viewDidUnload { [super viewDidUnload]; [_items release]; }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд░рд┐рдХреЙрд░реНрдб рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд▓реЛрдб рдХреА рд╡рд┐рдзрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ:
- (void)loadItems { // NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Base.db"]; // FMDatabase *database; database = [FMDatabase databaseWithPath:path]; database.traceExecution = true; // [database open]; // animals FMResultSet *results = [database executeQuery:@"select * from animals"]; while([results next]) { NSString *name = [results stringForColumn:@"name"]; //atIndex - - , [_items insertObject:name atIndex:[_items count]]; } // [database close]; }
FMDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рд▓рд┐рдВрдХ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ FMDB рд╣реЗрдбрд░ (#import "fmdb / src / FMDatabase.h") рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ред
рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбреЗрдЯрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рдВрдкреНрд░рджрд╛рдп рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪ рд░рд╣реЗ рд╣реИрдВ! рдЗрд╕рдХреЗ рдмрд╛рдж, рддреАрди рдореБрдЦреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ (рдХреНрд░рдорд╛рдВрдХ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝рдХрд░, рдЯреЗрдмрд▓ рд╡реНрдпреВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЪрд┐рддреНрд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рддрд╛ рд╣реВрдВ)ред "NumberOfSectionsInTableView" рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддреА рд╣реИред рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ, рд╣рдо рдмрд╕ рдЗрдХрд╛рдИ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; }
рд▓реЗрдХрд┐рди "numberOfRowsInSection" рд╡рд┐рдзрд┐ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддреА рд╣реИред рдПрдХрд▓-рдЦрдВрдб рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреБрд▓ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [_items count]; }
рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдзрд┐ рд╣реИ рдХрд┐ рд╕реЗрд▓ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рджреЗрддрд╛ рд╣реИ:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // , , // "Cell" NSString *cellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if (cell == nil) { // , cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease]; } // indexPath.row NSString *item = [_items objectAtIndex:indexPath.row]; // label cell.textLabel.text = item; return cell; }
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдирдВрдж рд▓реЗрддреЗ рд╣реИрдВ:

рдирд┐рд╖реНрдХрд░реНрд╖
IOS рд╡рд┐рдХрд╛рд╕ рдПрдХ рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдШрдЯрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рдХрд╛рдлреА рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рд╣реИрдВред рдЖрдИрдбреАрдИ рдФрд░ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЙрдкрдХрд░рдг рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИрдВред рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ (рдлрд╝рд╛рдЗрд▓-рдбрд╛рдЙрдирд▓реЛрдб):
docs.google.com/open?id=0B-5edA19iu-TSXZ6QUpoVWtUN28рдкреБрдирд╢реНрдЪ: рдХрдбрд╝рд╛рдИ рд╕реЗ рдиреНрдпрд╛рдп рди рдХрд░реЗрдВ, рдпрд╣ рд▓реЗрдЦрди рдореЗрдВ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИ! рд▓реЗрдХрд┐рди рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред