{"id":11740,"date":"2020-02-05T19:18:10","date_gmt":"2020-02-05T19:18:10","guid":{"rendered":"https:\/\/bestkora.com\/IosDeveloper\/?p=11740"},"modified":"2020-03-10T08:39:33","modified_gmt":"2020-03-10T08:39:33","slug":"sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2","status":"publish","type":"post","link":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/","title":{"rendered":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Combine \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u0445 \u0432 SwiftUI. \u0427\u0430\u0441\u0442\u044c 2. \u041d\u043e\u0432\u043e\u0441\u0442\u0438 NewsAPI.org."},"content":{"rendered":"<h1><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-29-at-15.29.11.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12098 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-29-at-15.29.11.png\" alt=\"\" width=\"1400\" height=\"1396\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-29-at-15.29.11.png 1400w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-29-at-15.29.11-150x150.png 150w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-29-at-15.29.11-300x300.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-29-at-15.29.11-768x766.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-29-at-15.29.11-1024x1021.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-29-at-15.29.11-301x300.png 301w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><\/a><\/h1>\n<h1>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 <a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>.<\/h1>\n<p><span style=\"font-weight: 400;\">\u0412 <a href=\"https:\/\/bestkora.com\/IosDeveloper\/modern-networking-in-swift-5-with-urlsession-combine-and-codable\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a><\/span><span style=\"font-weight: 400;\">\u00a0\u00a0\u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432\u00a0<a href=\"https:\/\/developers.themoviedb.org\/3\/getting-started\/introduction\">TMDb<\/a>\u00a0\u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u00a0<code>Combine<\/code> \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <code>HTTP<\/code> \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432\u00a0\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0445 \u0432\u043e\u00a0<code>View Model<\/code>\u00a0\u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f <code>UI<\/code>, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>SwiftUI<\/code>.\u00a0\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043c \u0442\u0443 \u0436\u0435 \u0441\u0430\u043c\u0443\u044e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0441 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u041d\u043e \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432\u00a0<a href=\"https:\/\/developers.themoviedb.org\/3\/getting-started\/introduction\"> TMDb<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u00a0 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438 \u043e\u0447\u0435\u043d\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439\u00a0\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org <\/a>\u00a0\u043d\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0430\u0433\u0435\u043d\u0441\u0442\u0432\u0430\u043c\u0438, \u0430 \u043e\u043d\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0433\u0443\u0442 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 &#171;\u041a\u0410\u0420\u0422\u0418\u041d\u041a\u0418&#187; (<code>image<\/code>) \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0451 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f <code>private<\/code> \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043e\u0442 <code><span style=\"color: #0000ff;\">nil<\/span><\/code>\u00a0\u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430\u00a0&#171;\u041a\u0410\u0420\u0422\u0418\u041d\u041a\u0423&#187; (<code>image<\/code>), \u0430 \u043e\u043d\u0430 \u0432\u043e\u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0435\u0451 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a> \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u0437\u0430\u0434\u0430\u043b\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 <code>API-key<\/code> \u0438\u043b\u0438 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b\u0438 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u0430\u0448\u0438\u043c \u0442\u0430\u0440\u0438\u0444\u043e\u043c.\u00a0\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0418\u043d\u0430\u0447\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u0432\u0434\u0440\u0443\u0433 \u043d\u0438 \u0441 \u0442\u043e\u0433\u043e, \u043d\u0438 \u0441 \u0441\u0435\u0433\u043e, \u0441\u0435\u0440\u0432\u0435\u0440\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>\u00a0\u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043f\u043e\u043b\u043d\u043e\u043c \u043d\u0435\u0434\u043e\u0443\u043c\u0435\u043d\u0438\u0438 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c \u044d\u043a\u0440\u0430\u043d\u043e\u043c.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0430\u0434\u043e \u0443\u043c\u0435\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>Combine<\/code>\u00a0\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430, \u043d\u043e \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043f\u043e\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432\u00a0<code>Combine<\/code>\u00a0\u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u044b\u0439\u00a0<code>UI<\/code> \u0432 <code>SwiftUI<\/code>.<\/span><\/p>\n<p><!--more--><\/p>\n<p><span style=\"font-weight: 400;\">\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043b\u044e\u0447 <strong>API<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u0441\u043b\u0443\u0436\u0431\u0435 <a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 <em>NewsAPI.swift<\/em>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u041a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 <strong><a href=\"https:\/\/github.com\/BestKora\/NewsApp\">Github<\/a><\/strong>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043c \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u00a0 <a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>\u00a0\u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u00a0<code>Combine<\/code>, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432\u00a0<a href=\"https:\/\/bestkora.com\/IosDeveloper\/modern-networking-in-swift-5-with-urlsession-combine-and-codable\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>.\u00a0<\/span><\/p>\n<h1>\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 API \u0441\u0435\u0440\u0432\u0438\u0441\u0430 <a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>.<\/h1>\n<p><span style=\"font-weight: 400;\">\u0421\u0435\u0440\u0432\u0438\u0441\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u043e\u0432\u043e\u0441\u0442\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 <code><span style=\"color: #0000ff;\">[Article]<\/span><\/code> \u0438 \u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445\u00a0<code><span style=\"color: #0000ff;\">[Source]<\/span><\/code>. \u041d\u0430\u0448\u0430 \u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439,\u00a0\u043e\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435\u00a0<em>Articles.swift<\/em>:<\/span><\/p>\n<pre class=\"line-numbers\"><code class=\"language-swift\">import Foundation\r\n\r\nstruct NewsResponse: Codable {\r\n    let status: String?\r\n    let totalResults: Int?\r\n    let articles: [Article]\r\n}\r\n\r\nstruct Article: Codable, Identifiable {\r\n    let id = UUID()\r\n    let title: String\r\n    let description: String?\r\n    let author: String?\r\n    let urlToImage: String?\r\n    let publishedAt: Date?\r\n    let source: Source\r\n}\r\n\r\nstruct SourcesResponse: Codable {\r\n    let status: String\r\n    let sources: [Source]\r\n}\r\n\r\nstruct Source: Codable,Identifiable {\r\n    let id: String?\r\n    let name: String?\r\n    let description: String?\r\n    let country: String?\r\n    let category: String?\r\n    let url: String?\r\n}<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">\u0421\u0442\u0430\u0442\u044c\u044f <code><span style=\"color: #0000ff;\">Article<\/span><\/code> \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <code><span style=\"color: #0000ff;\">id<\/span><\/code>, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 <code><span style=\"color: #0000ff;\">title<\/span><\/code>, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u00a0<code><span style=\"color: #0000ff;\">description<\/span><\/code>, \u0430\u0432\u0442\u043e\u0440\u0430 <code><span style=\"color: #0000ff;\">author<\/span><\/code>, <code>URL<\/code> &#171;\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438&#187; <code><span style=\"color: #0000ff;\">urlToImage<\/span><\/code>, \u0434\u0430\u0442\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 <code><span style=\"color: #0000ff;\">publishedAt<\/span><\/code> \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 <code><span style=\"color: #0000ff;\">source<\/span><\/code>. \u041d\u0430\u0434 \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438 <code><span style=\"color: #0000ff;\">[Article]<\/span><\/code> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u00a0<code><span style=\"color: #0000ff;\">NewsResponse<\/span><\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code><span style=\"color: #0000ff;\">articles<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0430\u0442\u0435\u0439.\u00a0\u041a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code><span style=\"color: #0000ff;\">NewsResponse<\/span><\/code> \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u00a0<code><span style=\"color: #0000ff;\">Article<\/span><\/code> \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f <code><span style=\"color: #0000ff;\">Codable<\/span><\/code>, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0434\u0432\u0443\u043c\u044f \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u043a\u043e\u0434\u0430 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 <code>JSON<\/code> \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u041c\u043e\u0434\u0435\u043b\u044c. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u00a0<code><span style=\"color: #0000ff;\">Article<\/span><\/code>\u00a0\u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0435\u0449\u0435 \u0438 <code><span style=\"color: #0000ff;\">Identifiable<\/span><\/code>, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441\u0442\u0430\u0442\u0435\u0439 <code><span style=\"color: #0000ff;\">[Article]<\/span><\/code> \u0432 \u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u0430\u00a0<code><span style=\"color: #0000ff;\">List<\/span><\/code>\u00a0\u0432 <code>SwiftUI<\/code>. \u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b <code><span style=\"color: #0000ff;\">Identifiable<\/span><\/code> \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <code><span style=\"color: #0000ff;\">id<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u043c \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c <code><span style=\"color: #0000ff;\">UUID()<\/span><\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">Source<\/span><\/code> \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <code><span style=\"color: #0000ff;\">id<\/span><\/code>, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 <code><span style=\"color: #0000ff;\">name<\/span><\/code>, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u00a0<code><span style=\"color: #0000ff;\">description<\/span><\/code>, \u0441\u0442\u0440\u0430\u043d\u0443\u00a0<code><span style=\"color: #0000ff;\">country<\/span><\/code>, \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 <code><span style=\"color: #0000ff;\">category<\/span><\/code>, <code>URL<\/code>\u00a0\u0441\u0430\u0439\u0442\u0430\u00a0<code><span style=\"color: #0000ff;\">url<\/span><\/code>. \u041d\u0430\u0434 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">[Source]<\/span><\/code> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u00a0<code><span style=\"color: #0000ff;\">SourcesResponse<\/span><\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code><span style=\"color: #0000ff;\">sources<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.\u00a0\u041a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code><span style=\"color: #0000ff;\">SourcesResponse<\/span><\/code> \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u00a0<code><span style=\"color: #0000ff;\">Source<\/span><\/code> \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f <code><span style=\"color: #0000ff;\">Codable<\/span><\/code>, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 <code>JSON<\/code> \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u041c\u043e\u0434\u0435\u043b\u044c. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u00a0<code><span style=\"color: #0000ff;\">Source<\/span><\/code>\u00a0\u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0435\u0449\u0435 \u0438 <code><span style=\"color: #0000ff;\">Identifiable<\/span><\/code>, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">[Source]<\/span><\/code> \u0432 \u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u0430\u00a0<code><span style=\"color: #0000ff;\">List<\/span><\/code>\u00a0\u0432 <code>SwiftUI<\/code>. \u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b <code><span style=\"color: #0000ff;\">Identifiable<\/span><\/code> \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <code><span style=\"color: #0000ff;\">id<\/span><\/code><\/span><span style=\"font-weight: 400;\">, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439 \u043e\u0442 \u043d\u0430\u0441 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u043e\u0439 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d\u00a0<code>API<\/code> \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>, \u0438 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043c \u0435\u0433\u043e \u0432 \u0444\u0430\u0439\u043b\u0435\u00a0<em>NewsAPI.swift<\/em>. \u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e <code>API<\/code>\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f\u00a0\u043a\u043b\u0430\u0441\u0441 <code><span style=\"color: #0000ff;\">NewsAPI<\/span><\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439\u00a0\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a> &#8212; \u0441\u0442\u0430\u0442\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">[Article]<\/span><\/code> \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">[Source]<\/span><\/code>:<\/span><\/p>\n<ol>\n<li><span style=\"font-weight: 400;\"><code><span style=\"color: #0000ff;\">fetchArticles (from endpoint: Endpoint) -&gt; AnyPublisher&lt;[Article], Never&gt;\u00a0<\/span><\/code> &#8212;\u00a0\u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0441\u0442\u0430\u0442\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">[Article]<\/span><\/code> \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code><span style=\"color: #0000ff;\">endpoint<\/span><\/code>,<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><code><span style=\"color: #0000ff;\">fetchSources (for country: String)\u00a0-&gt; AnyPublisher&lt;[Source], Never&gt;<\/span><\/code> &#8212; \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438<code><span style=\"color: #0000ff;\">[Source]<\/span><\/code>\u00a0\u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u044b <code><span style=\"color: #0000ff;\">country<\/span><\/code>.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">\u042d\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0430\u0442\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">[Article]<\/span><\/code>\u00a0\u0438\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">[Source]<\/span><\/code>, \u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439&#187;\u00a0<code><span style=\"color: #0000ff;\">Publisher <\/span><\/code>\u00a0\u043d\u043e\u0432\u043e\u0433\u043e\u00a0 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 <code><span style=\"color: #0000ff;\">Combine<\/span><\/code>. \u041e\u0431\u0430 \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 &#8212; <code><span style=\"color: #0000ff;\">Never<\/span><\/code>, \u0430 \u0435\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u043b\u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0438\u043c\u0435\u043b\u0430 \u043c\u0435\u0441\u0442\u043e, \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0430\u0442\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">[Article]()<\/span><\/code>\u00a0\u0438\u043b\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">[Source]()<\/span><\/code> \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043f\u0443\u0441\u0442\u044b\u043c\u0438.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0422\u043e, \u043a\u0430\u043a\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u043b\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 <a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>, \u0431\u0443\u0434\u0435\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u00a0<code><span style=\"color: #0000ff;\">enum Endpoint<\/span><\/code>:<\/span><\/p>\n<pre class=\"line-numbers\"><code class=\"language-swift\">enum Endpoint {\r\n    case topHeadLines\r\n    case articlesFromCategory(_ category: String)\r\n    case articlesFromSource(_ source: String)\r\n    case search (searchFilter: String)\r\n    case sources (country: String)\r\n    \r\n    var baseURL:URL {URL(string: \"https:\/\/newsapi.org\/v2\/\")!}\r\n    \r\n    func path() -&gt; String {\r\n        switch self {\r\n        case .topHeadLines, .articlesFromCategory:\r\n            return \"top-headlines\"\r\n        case .search,.articlesFromSource:\r\n            return \"everything\"\r\n        case .sources:\r\n            return \"sources\"\r\n        }\r\n    }\r\n}<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">\u042d\u0442\u043e :<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438\u00a0<code><span style=\"color: #0000ff;\">.topHeadLines<\/span><\/code>, <\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 (<code>sports<\/code>, <code>healthy<\/code>, <code>science<\/code>, <code>business<\/code>, <code>technology<\/code>)\u00a0<code><span style=\"color: #0000ff;\">.articlesFromCategory(_ category: String)<\/span><\/code>, <\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (<code>CNN<\/code>, <code>ABC News<\/code>, <code>Fox News<\/code> \u0438 \u0442.\u0434.)\u00a0<code><span style=\"color: #0000ff;\">.articlesFromSource(_ source: String)<\/span><\/code>, <\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u043b\u044e\u0431\u044b\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438\u00a0<code><span style=\"color: #0000ff;\">.search (searchFilter: String)<\/span><\/code>, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u0438\u044e <code><span style=\"color: #0000ff;\">searchFilter<\/span><\/code>,<\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 <code><span style=\"color: #0000ff;\"> .sources (country:String)<\/span><\/code> \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u044b <code><span style=\"color: #0000ff;\">country<\/span><\/code>.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">\u0414\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e\u0439 \u043d\u0430\u043c \u043e\u043f\u0446\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 <code><span style=\"color: #0000ff;\">Endpoint<\/span><\/code> \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 <code><span style=\"color: #0000ff;\">init?<\/span><\/code> \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00a0\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 <code><span style=\"color: #0000ff;\">index<\/span><\/code>\u00a0\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 <code><span style=\"color: #0000ff;\">text<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u043c\u044b\u0441\u043b \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f :<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.00.06.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11987 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.00.06.png\" alt=\"\" width=\"1120\" height=\"364\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.00.06.png 1120w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.00.06-300x98.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.00.06-768x250.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.00.06-1024x333.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.00.06-500x163.png 500w\" sizes=\"auto, (max-width: 1120px) 100vw, 1120px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430 <code><span style=\"color: #0000ff;\">NewsAPI<\/span><\/code>\u00a0\u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043a\u043b\u0430\u0441\u0441 <code><span style=\"color: #0000ff;\">MovieAPI<\/span><\/code> \u0438\u0437 <a href=\"https:\/\/github.com\/BestKora\/MoviesJSON\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/a>. \u0422\u0430\u043c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f <code>Generic<\/code> \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0430\u044f\u00a0<\/span><span style=\"font-weight: 400;\">&#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; <code><span style=\"color: #0000ff;\">AnyPublisher&lt;T, Never&gt;<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e\u00a0<code><span style=\"color: #0000ff;\">url<\/span><\/code> \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u00a0<code>JSON<\/code> \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 \u0435\u0451 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 <code><span style=\"color: #0000ff;\">Codable<\/span><\/code> \u041c\u043e\u0434\u0435\u043b\u0438 <code><span style=\"color: #0000ff;\">T<\/span><\/code>\u00a0:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.10.33.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11855 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.10.33.png\" alt=\"\" width=\"1202\" height=\"308\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.10.33.png 1202w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.10.33-300x77.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.10.33-768x197.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.10.33-1024x262.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.10.33-500x128.png 500w\" sizes=\"auto, (max-width: 1202px) 100vw, 1202px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; <code><span style=\"color: #0000ff;\">Publisher<\/span><\/code>, \u0435\u0441\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f <code><span style=\"color: #0000ff;\">url<\/span><\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,\u00a0<code><span style=\"color: #0000ff;\">Endpoint <\/span><\/code>\u00a0\u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>\u00a0. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u041c\u043e\u0434\u0435\u043b\u0438 &#8212;\u00a0 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0430\u0442\u0435\u0439<code><span style=\"color: #0000ff;\">[Article]<\/span><\/code> \u0438\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 <code><span style=\"color: #0000ff;\">[Source]<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.05.54.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11988 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.05.54.png\" alt=\"\" width=\"1080\" height=\"914\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.05.54.png 1080w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.05.54-300x254.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.05.54-768x650.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.05.54-1024x867.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-11.05.54-354x300.png 354w\" sizes=\"auto, (max-width: 1080px) 100vw, 1080px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0430\u0445 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439&#187;, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 <a href=\"https:\/\/bestkora.com\/IosDeveloper\/modern-networking-in-swift-5-with-urlsession-combine-and-codable\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0438&#187; \u0441\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435 &#171;\u043d\u0435 \u0432\u0437\u043b\u0435\u0442\u0430\u044e\u0442&#187;, \u043e\u043d\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0430 \u043d\u0438\u0445 \u043a\u0442\u043e-\u0442\u043e \u043d\u0435 \u00ab\u043f\u043e\u0434\u043f\u0438\u0448\u0435\u0442\u0441\u044f\u00bb. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 <code>UI<\/code>\u00a0\u0432\u00a0<code>SwiftUI<\/code>\u00a0\u0438 &#171;\u043f\u043e\u0434\u043f\u0438\u0448\u0435\u043c\u0441\u044f&#187; \u043d\u0430 \u043d\u0438\u0445 \u0432\u00a0\u00a0<code><span style=\"color: #0000ff;\">ObservableObject<\/span><\/code>\u00a0\u043a\u043b\u0430\u0441\u0441\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0418\u0427\u0415\u0421\u041a\u0418 \u0421\u0418\u041d\u0425\u0420\u041e\u041d\u0418\u0417\u0418\u0420\u0423\u0415\u0422 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0<code><span style=\"color: #0000ff;\">View<\/span><\/code>.\u00a0<\/span><\/p>\n<h1>&#171;\u0418\u0437\u0434\u0430\u0442\u0435\u043b\u0438&#187; <code><span style=\"color: #0000ff;\">Publisher<\/span><\/code> \u043a\u0430\u043a View Model \u0432 <code>SwiftUI<\/code>. \u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u0442\u0435\u0439.<\/h1>\n<p><span style=\"font-weight: 400;\">\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0432 <code>SwiftUI<\/code> \u0434\u043e\u043b\u0436\u043d\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0438&#187; \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0441\u0442\u0430\u0442\u0435\u0439:<code><span style=\"color: #0000ff;\">.topHeadLines<\/span><\/code>&#8212; \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439,\u00a0<code><span style=\"color: #0000ff;\">.articlesFromCategory(_ category: String)<\/span><\/code>\u00a0&#8212; \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438,\u00a0<code><span style=\"color: #0000ff;\">.articlesFromSource(_ source: String)<\/span><\/code>\u00a0&#8212; \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, <code><span style=\"color: #0000ff;\">.search (searchFilter: String)<\/span><\/code>\u00a0&#8212; \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u0438\u044e.<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-01-at-19.30.45.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11861 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-01-at-19.30.45.png\" alt=\"\" width=\"2112\" height=\"1420\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-01-at-19.30.45.png 2112w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-01-at-19.30.45-300x202.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-01-at-19.30.45-768x516.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-01-at-19.30.45-1024x688.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-01-at-19.30.45-446x300.png 446w\" sizes=\"auto, (max-width: 2112px) 100vw, 2112px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u043e\u0439 <code><span style=\"color: #0000ff;\">Endpoint<\/span><\/code> \u0432\u044b\u0431\u0435\u0440\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c,\u00a0\u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u0442\u0435\u0439 <code><span style=\"color: #0000ff;\">articles<\/span><\/code>, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0430\u0439\u0442\u0430 <a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>.\u00a0\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u00a0<code><span style=\"color: #0000ff;\">ArticlesViewModel<\/span><\/code>, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b <code><span style=\"color: #0000ff;\">ObservableObject<\/span><\/code>\u00a0\u0441 \u0442\u0440\u0435\u043c\u044f\u00a0<code><span style=\"color: #0000ff;\">@Published<\/span><\/code> \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438: \u00a0<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12023 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30.png\" alt=\"\" width=\"1566\" height=\"1274\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30.png 1566w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30-300x244.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30-768x625.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30-1024x833.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30-369x300.png 369w\" sizes=\"auto, (max-width: 1566px) 100vw, 1566px\" \/><\/a><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">\u043e\u0434\u043d\u043e\u00a0<code><span style=\"color: #0000ff;\">@Published var indexEndpoint: Int<\/span><\/code> &#8212; \u044d\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441 <code><span style=\"color: #0000ff;\">Endpoint<\/span><\/code> (\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0435\u0433\u043e &#171;\u0432\u0445\u043e\u0434\u043e\u043c&#187;, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 <code><span style=\"color: #0000ff;\">View<\/span><\/code>),\u00a0\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u0432\u0442\u043e\u0440\u043e\u0435\u00a0<code><span style=\"color: #0000ff;\">@Published var searchString: String<\/span><\/code> &#8212; \u044d\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0430, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0438\u0441\u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u0438\u043b\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0445 \u043d\u0430\u0441 \u0441\u0442\u0430\u0442\u0435\u0439\u00a0\u00a0(\u0442\u0430\u043a\u0436\u0435 \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0435\u0433\u043e &#171;\u0432\u0445\u043e\u0434\u043e\u043c&#187;, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 <code><span style=\"color: #0000ff;\">View<\/span><\/code>\u00a0\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f <code><span style=\"color: #0000ff;\">TextField<\/span><\/code>),<\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u0442\u0440\u0435\u0442\u044c\u0435\u00a0<code><span style=\"color: #0000ff;\">@Published var articles: [Article]<\/span><\/code>\u00a0&#8212; \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 (\u0443\u0441\u043b\u043e\u0432\u043d\u043e &#171;\u0432\u044b\u0445\u043e\u0434&#187;, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0430\u0439\u0442\u0430 \u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0445 &#171;\u0432\u0445\u043e\u0434\u0430\u043c\u0438&#187;).<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438\u00a0<code><span style=\"color: #0000ff;\">@Published<\/span><\/code>\u00a0\u043f\u0435\u0440\u0435\u0434 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438\u00a0<code><span style=\"color: #0000ff;\">indexEndpoint<\/span><\/code>\u00a0\u0438\u043b\u0438 <code><span style=\"color: #0000ff;\">searchString<\/span><\/code>, \u043c\u044b\u00a0\u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0438 \u043a\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u00a0<code><span style=\"color: #0000ff;\">indexEndpoint<\/span><\/code>\u00a0\u0438\u00a0<code><span style=\"color: #0000ff;\">$searchString<\/span><\/code>, \u0442\u0430\u043a \u0438 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0438&#187;\u00a0<code><span style=\"color: #0000ff;\">$indexEndpoint <\/span><\/code>\u00a0\u0438\u00a0<code><span style=\"color: #0000ff;\">$searchString<\/span><\/code>. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 \u043a\u043b\u0430\u0441\u0441\u0435\u00a0<code><span style=\"color: #0000ff;\">ArticlesViewModel<\/span><\/code>, \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u043e \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0421 \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430\u00a0\u00a0<code><span style=\"color: #0000ff;\">ArticlesViewModel<\/span><\/code>\u00a0\u0432 <code><span style=\"color: #0000ff;\">init?<\/span><\/code> \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443&#187;, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0433\u043e &#171;\u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430&#187; \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430\u00a0<code><span style=\"color: #0000ff;\">ArticlesViewModel<\/span><\/code> \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u00a0 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0442\u0430\u0442\u0435\u0439 <code><span style=\"color: #0000ff;\"> articles<\/span><\/code> \u043e\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u00a0<code><span style=\"color: #0000ff;\">indexEndpoint<\/span><\/code>\u00a0\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0438\u0441\u043a\u0430\u00a0<code><span style=\"color: #0000ff;\">searchString<\/span><\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 <code>Combine<\/code> \u043c\u044b \u043f\u0440\u043e\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u043c \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043e\u0442 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439&#187;\u00a0<code><span style=\"color: #0000ff;\">$indexEndpoint <\/span><\/code>\u00a0\u0438\u00a0<code><span style=\"color: #0000ff;\">$searchString<\/span><\/code> \u0434\u043e \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; <code><span style=\"color: #0000ff;\">AnyPublisher&lt;[Article], Never&gt;<\/span><\/code>, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 &#8212; \u044d\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u0442\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">articles<\/span><\/code>. \u0412\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u043c\u044b &#171;\u043f\u043e\u0434\u043f\u0438\u0448\u0435\u043c\u0441\u044f&#187; \u043d\u0430 \u043d\u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <code><span style=\"color: #0000ff;\">assign\u00a0(to: \\.articles, on: self)<\/span><\/code> \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u0442\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">articles<\/span><\/code>\u00a0\u043a\u0430\u043a &#171;\u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0435&#187;\u00a0<code><span style=\"color: #0000ff;\">@Published<\/span><\/code>\u00a0\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0435\u0435 <code>UI.<\/code><\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u041c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0442\u044f\u043d\u0443\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u041d\u0415 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u00a0<code><span style=\"color: #0000ff;\">indexEndpoint<\/span><\/code> \u0438 <code><span style=\"color: #0000ff;\">searchString<\/span><\/code>, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0442 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439&#187;\u00a0<code><span style=\"color: #0000ff;\">$indexEndpoint<\/span><\/code>\u00a0\u0438\u00a0<code><span style=\"color: #0000ff;\">$searchString<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 <code>UI<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code><span style=\"color: #0000ff;\">SwiftUI<\/span><\/code> \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0445 \u043c\u044b \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u00a0 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u00a0<code><span style=\"color: #0000ff;\">Picker<\/span><\/code> \u0438 <code><span style=\"color: #0000ff;\">TextField<\/span><\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u041a\u0430\u043a \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 \u043d\u0430\u0448\u0435\u043c \u0430\u0440\u0441\u0435\u043d\u0430\u043b\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code><span style=\"color: #0000ff;\">fetchArticles (from: Endpoint)<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0441\u0435\u00a0<code><span style=\"color: #0000ff;\">NewsAPI<\/span><\/code> \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;\u00a0<code><span style=\"color: #0000ff;\">AnyPublisher&lt;[Article], Never&gt;<\/span><\/code>, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u00a0<code><span style=\"color: #0000ff;\">Endpoint<\/span><\/code>, \u0438 \u043d\u0430\u043c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439&#187;\u00a0<code><span style=\"color: #0000ff;\">$indexEndpoint<\/span><\/code> \u00a0\u0438\u00a0<code><span style=\"color: #0000ff;\">$searchString<\/span><\/code>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0438\u0445 \u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">endpoint<\/span><\/code>.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">C\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u043c &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439&#187;\u00a0<code><span style=\"color: #0000ff;\">$indexEndpoint<\/span><\/code>\u00a0\u0438\u00a0<code><span style=\"color: #0000ff;\">$searchString<\/span><\/code>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 <code>Combine<\/code> \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u00a0<code><span style=\"color: #0000ff;\">Publishers.CombineLatest<\/span><\/code><\/span>:<\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-17.56.59.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11877 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-17.56.59.png\" alt=\"\" width=\"1024\" height=\"74\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-17.56.59.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-17.56.59-300x22.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-17.56.59-768x56.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-17.56.59-500x36.png 500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0432 <code>Combine<\/code>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u00a0<code><span style=\"color: #0000ff;\">flatMap <\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.02.21.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11878 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.02.21.png\" alt=\"\" width=\"968\" height=\"258\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.02.21.png 968w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.02.21-300x80.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.02.21-768x205.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.02.21-500x133.png 500w\" sizes=\"auto, (max-width: 968px) 100vw, 968px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u0430\u043b\u0435\u0435 \u043c\u044b &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u0441\u044f&#187; \u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u0432\u043d\u043e\u0432\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u0430&#187;\u00a0<code><span style=\"color: #0000ff;\">assign (to: \\.articles, on: self)<\/span><\/code> \u0438 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u043e\u0442 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00a0<code><span style=\"color: #0000ff;\">@Published<\/span><\/code>\u00a0\u043c\u0430\u0441\u0441\u0438\u0432\u0443\u00a0<code><span style=\"color: #0000ff;\">articles<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.04.51.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11879 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.04.51.png\" alt=\"\" width=\"1008\" height=\"288\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.04.51.png 1008w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.04.51-300x86.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.04.51-768x219.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.04.51-500x143.png 500w\" sizes=\"auto, (max-width: 1008px) 100vw, 1008px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0432 <code><span style=\"color: #0000ff;\">init( )<\/span><\/code> \u0410\u0421\u0418\u041d\u0425\u0420\u041e\u041d\u041d\u041e\u0413\u041e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0438 &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c&#187; \u043d\u0430 \u043d\u0435\u0433\u043e, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0432 <code><span style=\"color: #0000ff;\">AnyCancellable<\/span><\/code> &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443&#187;. <\/span><span style=\"font-weight: 400;\">\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code><span style=\"color: #0000ff;\">AnyCancellable<\/span><\/code> &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438&#187; \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0430 \u043f\u043e\u043a\u0438\u0434\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0437\u0430\u043d\u044f\u0442\u0430\u044f \u0435\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e <code><span style=\"color: #0000ff;\">init( )<\/span><\/code> \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f, \u044d\u0442\u0430 &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430&#187; \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0430 <code>ARC<\/code>,\u00a0\u0442\u0430\u043a \u0438 \u043d\u0435 \u0443\u0441\u043f\u0435\u0432 \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u0430\u0441\u0441\u0438\u0432\u0443\u00a0<code><span style=\"color: #0000ff;\">articles<\/span><\/code>. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u043e\u0439 &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438&#187; \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0417\u0410 \u041f\u0420\u0415\u0414\u0415\u041b\u0410\u041c\u0418 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u00a0<code><span style=\"color: #0000ff;\">init()<\/span><\/code>\u00a0\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code><span style=\"color: #0000ff;\">var\u00a0cancellableSet<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442 \u043d\u0430\u0448\u0443\u00a0<code><span style=\"color: #0000ff;\">AnyCancellable<\/span><\/code> &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443&#187; \u0432 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u201c\u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430\u201d \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430\u00a0<code><span style=\"color: #0000ff;\"> ArticlesViewMode<\/span><\/code>.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0417\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f <code><span style=\"color: #0000ff;\">AnyCancellable<\/span><\/code> &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430&#187; \u0432\u00a0\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439\u00a0<code><span style=\"color: #0000ff;\">cancellableSet<\/span><\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <code><span style=\"color: #0000ff;\">.store ( in: &amp;self.cancellableSet)<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.11.41.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11880 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.11.41.png\" alt=\"\" width=\"996\" height=\"316\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.11.41.png 996w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.11.41-300x95.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.11.41-768x244.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.11.41-500x159.png 500w\" sizes=\"auto, (max-width: 996px) 100vw, 996px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043f\u0440\u0438 \u043d\u0430\u0431\u043e\u0440\u0435 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438\u00a0<code><span style=\"color: #0000ff;\">searchString<\/span><\/code>, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0430\u043c\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0438\u0441\u043a\u0430\u00a0<code><span style=\"color: #0000ff;\">$searchString<\/span><\/code>, \u0430 \u0435\u0433\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <code><span style=\"color: #0000ff;\">validString<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.22.44.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11881 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.22.44.png\" alt=\"\" width=\"1008\" height=\"222\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.22.44.png 1008w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.22.44-300x66.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.22.44-768x169.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.22.44-500x110.png 500w\" sizes=\"auto, (max-width: 1008px) 100vw, 1008px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">&#171;\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430&#187; \u043d\u0430 \u0410\u0421\u0418\u041d\u0425\u0420\u041e\u041d\u041d\u041e\u0413\u041e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0432 <code><span style=\"color: #0000ff;\">init( )<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11882 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25.png\" alt=\"\" width=\"1026\" height=\"700\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25.png 1026w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25-300x205.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25-768x524.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25-1024x699.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25-440x300.png 440w\" sizes=\"auto, (max-width: 1026px) 100vw, 1026px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">&#8230; \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u201c\u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430\u201d \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430\u00a0<code><span style=\"color: #0000ff;\">ArticlesViewModel<\/span><\/code>. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043a\u0430\u043a \u0443\u0433\u043e\u0434\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439&#187;\u00a0<code><span style=\"color: #0000ff;\">$indexEndpoint<\/span><\/code>\u00a0\u0438 \/\u0438\u043b\u0438\u00a0<code><span style=\"color: #0000ff;\">searchString<\/span><\/code>, \u0438\u00a0\u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0435&#187; \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439\u00a0 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0430\u0442\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">articles<\/span><\/code> \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439. \u0422\u0430\u043a\u043e\u0439\u00a0<code><span style=\"color: #0000ff;\">ObservableObject<\/span><\/code> \u043a\u043b\u0430\u0441\u0441\u00a0\u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u00a0<code>View Model<\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c <code>View Model<\/code> \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (<code>UI<\/code>). \u0412 <code>SwiftUI<\/code> \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 <code><span style=\"color: #0000ff;\">View<\/span><\/code> c <code><span style=\"color: #0000ff;\">ObservableObject<\/span><\/code>\u00a0\u041c\u043e\u0434\u0435\u043b\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code><span style=\"color: #0000ff;\">@ObservedObject<\/span><\/code> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u043d\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 \u044d\u0442\u043e\u0439 \u041c\u043e\u0434\u0435\u043b\u0438. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0430 \u043f\u0430\u0440\u0430 &#8212;\u00a0<code><span style=\"color: #0000ff;\">ObservableObject<\/span><\/code>\u00a0\u043a\u043b\u0430\u0441\u0441 \u0438\u00a0<code><span style=\"color: #0000ff;\">@ObservedObject<\/span><\/code> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u043d\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 &#8212; \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c\u00a0\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (<code>UI<\/code>) \u0432\u00a0<code>SwiftUI<\/code>. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443\u00a0<code><span style=\"color: #0000ff;\">ContentViewArticles<\/span><\/code>\u00a0\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code><span style=\"color: #0000ff;\"> var articlesViewModel<\/span><\/code>, \u0438\u043c\u0435\u044e\u0449\u0443\u044e \u0422\u0418\u041f\u00a0<code><span style=\"color: #0000ff;\">ArticlesViewModel<\/span><\/code>, \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u043c <code><span style=\"color: #0000ff;\">Text (\"Hello, World!\")<\/span><\/code> \u043d\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u0442\u0435\u0439 <code><span style=\"color: #0000ff;\">ArticlesList<\/span><\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043c \u0441\u0442\u0430\u0442\u044c\u0438\u00a0<code><span style=\"color: #0000ff;\">articlesViewModel.articles<\/span><\/code>, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435\u00a0 \u0438\u0437 \u043d\u0430\u0448\u0435\u0439\u00a0<code>View Model<\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u0442\u0435\u0439 \u0434\u043b\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u00a0<code><span style=\"color: #0000ff;\">indexEndpoint = 0<\/span><\/code>, \u0442\u043e \u0435\u0441\u0442\u044c <code><span style=\"color: #0000ff;\">.topHeadLines<\/span><\/code>\u00a0&#8212; \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.43.15.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11883 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.43.15.png\" alt=\"\" width=\"1660\" height=\"1420\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.43.15.png 1660w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.43.15-300x257.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.43.15-768x657.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.43.15-1024x876.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.43.15-351x300.png 351w\" sizes=\"auto, (max-width: 1660px) 100vw, 1660px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0430 \u043d\u0430\u0448 \u044d\u043a\u0440\u0430\u043d\u00a0<code>UI<\/code> \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043c, \u043a\u0430\u043a\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0442\u0430\u0442\u0435\u0439 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c. \u0411\u0443\u0434\u0435\u043c\u00a0\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code><span style=\"color: #0000ff;\">Picker<\/span><\/code> \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u0430 <code><span style=\"color: #0000ff;\">$articlesViewModel.indexEndpoint<\/span><\/code>. \u041f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u00a0<code><span style=\"color: #0000ff;\">$<\/span><\/code> \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e\u00a0<code><span style=\"color: #0000ff;\">@Published<\/span><\/code>\u00a0&#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u043c&#187;. \u0421\u0440\u0430\u0437\u0443 \u0436\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430&#187; \u043d\u0430 \u044d\u0442\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;, \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430\u043c\u0438 \u0432 <code><span style=\"color: #0000ff;\">init ()<\/span><\/code>,\u00a0 &#171;\u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439&#187;\u00a0<code><span style=\"color: #0000ff;\">@Published<\/span><\/code>\u00a0\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044c&#187;\u00a0<code><span style=\"color: #0000ff;\">articles<\/span><\/code>\u00a0\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u0442\u0435\u0439:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.20.06.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11887 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.20.06.png\" alt=\"\" width=\"1062\" height=\"752\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.20.06.png 1062w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.20.06-300x212.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.20.06-768x544.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.20.06-1024x725.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.20.06-424x300.png 424w\" sizes=\"auto, (max-width: 1062px) 100vw, 1062px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0441\u0442\u0430\u0442\u0435\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0442\u0440\u0435\u0445 \u043e\u043f\u0446\u0438\u0439 &#8212; <code>\"topHeadLines\"<\/code>, <code>\"search\"<\/code> \u0438 <code>\"from category\"<\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.49.40.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11888 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.49.40.png\" alt=\"\" width=\"2122\" height=\"1392\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.49.40.png 2122w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.49.40-300x197.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.49.40-768x504.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.49.40-1024x672.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.49.40-457x300.png 457w\" sizes=\"auto, (max-width: 2122px) 100vw, 2122px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">&#8230;\u00a0 \u043d\u043e \u0434\u043b\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 <code><span style=\"color: #0000ff;\">searchString = \"sports\"<\/span><\/code> (\u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u043d\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f):<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.53.23.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11890 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.53.23.png\" alt=\"\" width=\"980\" height=\"354\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.53.23.png 980w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.53.23-300x108.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.53.23-768x277.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-20.53.23-500x181.png 500w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041e\u0434\u043d\u0430\u043a\u043e \u0434\u043b\u044f \u043e\u043f\u0446\u0438\u0438\u00a0<code>\"search\"<\/code>\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 <code><span style=\"color: #0000ff;\">SearchView<\/span><\/code> \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-10.18.03.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11892 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-10.18.03.png\" alt=\"\" width=\"1168\" height=\"742\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-10.18.03.png 1168w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-10.18.03-300x191.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-10.18.03-768x488.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-10.18.03-1024x651.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-10.18.03-472x300.png 472w\" sizes=\"auto, (max-width: 1168px) 100vw, 1168px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u043f\u043e \u043d\u0430\u0431\u0440\u0430\u043d\u043d\u043e\u0439\u00a0 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.50.23.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11896 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.50.23.png\" alt=\"\" width=\"1426\" height=\"1428\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.50.23.png 1426w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.50.23-150x150.png 150w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.50.23-300x300.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.50.23-768x769.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.50.23-1024x1024.png 1024w\" sizes=\"auto, (max-width: 1426px) 100vw, 1426px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u043b\u044f \u043e\u043f\u0446\u0438\u0438\u00a0<code>\"from category\"<\/code>\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043c\u044b \u0441 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 <code>science<\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-11.10.20.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11894 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-11.10.20.png\" alt=\"\" width=\"1264\" height=\"1104\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-11.10.20.png 1264w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-11.10.20-300x262.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-11.10.20-768x671.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-11.10.20-1024x894.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-11.10.20-343x300.png 343w\" sizes=\"auto, (max-width: 1264px) 100vw, 1264px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 &#8212; <code>science<\/code>, <code>health<\/code>,\u00a0<code>business<\/code>, <code>technology<\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.57.42.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11897 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.57.42.png\" alt=\"\" width=\"1412\" height=\"1410\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.57.42.png 1412w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.57.42-150x150.png 150w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.57.42-300x300.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.57.42-768x767.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-14.57.42-1024x1024.png 1024w\" sizes=\"auto, (max-width: 1412px) 100vw, 1412px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041c\u044b \u0432\u0438\u0434\u0438\u043c, \u043a\u0430\u043a \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f\u00a0<code><span style=\"color: #0000ff;\">ObservableObject<\/span><\/code>\u00a0\u041c\u043e\u0434\u0435\u043b\u044c, \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u0434\u0432\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c <code><span style=\"color: #0000ff;\">@Published<\/span><\/code> \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 &#8212; <code><span style=\"color: #0000ff;\">indexEndpoint<\/span><\/code>\u00a0\u0438 <code><span style=\"color: #0000ff;\">searchString<\/span><\/code> &#8212; \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0441\u043f\u0435\u043a\u0442\u0440 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 \u0441\u0430\u0439\u0442\u0430\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>.<\/span><\/p>\n<h1>\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/h1>\n<p><span style=\"font-weight: 400;\">\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0432 <code>SwiftUI<\/code>\u00a0\u0431\u0443\u0434\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 <code><span style=\"color: #0000ff;\">NewsAPI<\/span><\/code> &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044c&#187;<code><span style=\"color: #0000ff;\">fetchSources (for country: String)\u00a0-&gt; AnyPublisher&lt;[Source], Never&gt;<\/span><\/code> \u043f\u0440\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u041c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.01.51.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11990 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.01.51.png\" alt=\"\" width=\"1384\" height=\"1400\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.01.51.png 1384w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.01.51-297x300.png 297w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.01.51-768x777.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.01.51-1012x1024.png 1012w\" sizes=\"auto, (max-width: 1384px) 100vw, 1384px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">&#8230; \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u0445 \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.06.08.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11991 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.06.08.png\" alt=\"\" width=\"1402\" height=\"1408\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.06.08.png 1402w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.06.08-150x150.png 150w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.06.08-300x300.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.06.08-768x771.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.06.08-1020x1024.png 1020w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.06.08-299x300.png 299w\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">&#8230; \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435: \u0435\u0433\u043e \u0438\u043c\u044f, \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e, \u0441\u0442\u0440\u0430\u043d\u0443, \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0430\u0439\u0442:\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-20.38.05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11901 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-20.38.05.png\" alt=\"\" width=\"1422\" height=\"1408\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-20.38.05.png 1422w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-20.38.05-150x150.png 150w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-20.38.05-300x297.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-20.38.05-768x760.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-20.38.05-1024x1014.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-03-at-20.38.05-303x300.png 303w\" sizes=\"auto, (max-width: 1422px) 100vw, 1422px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0415\u0441\u043b\u0438 \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0435, \u0442\u043e \u043f\u043e\u043f\u0430\u0434\u0435\u043c \u043d\u0430 \u0441\u0430\u0439\u0442 \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043d\u0443\u0436\u043d\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f\u00a0<code><span style=\"color: #0000ff;\">ObservableObject <\/span><\/code>\u041c\u043e\u0434\u0435\u043b\u044c, \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c <code><span style=\"color: #0000ff;\">@Published<\/span><\/code> \u0441\u0432\u043e\u0439\u0441\u0442\u0432 &#8212; <code><span style=\"color: #0000ff;\">searchString<\/span><\/code>\u00a0 \u0438\u00a0<code><span style=\"color: #0000ff;\">country<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.26.05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12017 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.26.05.png\" alt=\"\" width=\"1178\" height=\"1066\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.26.05.png 1178w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.26.05-300x271.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.26.05-768x695.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.26.05-1024x927.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.26.05-332x300.png 332w\" sizes=\"auto, (max-width: 1178px) 100vw, 1178px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0418 \u043e\u043f\u044f\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0443 \u0436\u0435 \u0441\u0445\u0435\u043c\u0443 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 <code><span style=\"color: #0000ff;\">init<\/span><\/code> \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430\u00a0\u00a0<code><span style=\"color: #0000ff;\">SourcesViewModel<\/span><\/code>\u00a0 \u043c\u044b\u00a0 \u0441\u043e\u0437\u0434\u0430\u0451\u043c &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443&#187;, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0433\u043e &#171;\u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430&#187; \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430\u00a0<code><span style=\"color: #0000ff;\">SourcesViewModel<\/span><\/code> \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u00a0 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">sources<\/span><\/code> \u043e\u0442 \u0441\u0442\u0440\u0430\u043d\u044b\u00a0<code><span style=\"color: #0000ff;\">country<\/span><\/code> \u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0438\u0441\u043a\u0430\u00a0<code><span style=\"color: #0000ff;\">searchString<\/span><\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>Combine<\/code> \u043c\u044b \u0442\u044f\u043d\u0435\u043c \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043e\u0442 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439&#187;\u00a0\u00a0<code><span style=\"color: #0000ff;\">$searchString<\/span><\/code>\u00a0 \u0438 <code><span style=\"color: #0000ff;\">$country<\/span><\/code> \u0434\u043e \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; <code><span style=\"color: #0000ff;\">AnyPublisher&lt;[Source], Never&gt;<\/span><\/code>, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041c\u044b &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u0441\u044f&#187; \u043d\u0430 \u043d\u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <code><span style=\"color: #0000ff;\">assign\u00a0(to: \\.sources, on: self)<\/span><\/code>, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">sources<\/span><\/code>\u00a0\u0438 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e\u00a0<\/span><span style=\"font-weight: 400;\"><code><span style=\"color: #0000ff;\">AnyCancellable<\/span><\/code> &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443&#187; \u0432\u00a0\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439\u00a0<code><span style=\"color: #0000ff;\">cancellableSet<\/span><\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <code><span style=\"color: #0000ff;\">.store ( in: &amp;self.cancellableSet)<\/span><\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c <code>View Model<\/code> \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e <code>UI<\/code>.\u00a0\u0412 <code>SwiftUI<\/code> \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 <code><span style=\"color: #0000ff;\">View<\/span><\/code> c <code><span style=\"color: #0000ff;\">ObservableObject<\/span><\/code>\u00a0\u041c\u043e\u0434\u0435\u043b\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code><span style=\"color: #0000ff;\">@ObservedObject<\/span><\/code> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u043d\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 \u044d\u0442\u043e\u0439 \u041c\u043e\u0434\u0435\u043b\u0438.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443\u00a0<code><span style=\"color: #0000ff;\">ContentViewSources<\/span><\/code>\u00a0\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code><span style=\"color: #0000ff;\"> var sourcesViewModel<\/span><\/code>, \u0438\u043c\u0435\u044e\u0449\u0443\u044e \u0422\u0418\u041f <code><span style=\"color: #0000ff;\">SourcesViewModel<\/span><\/code>, \u0443\u0431\u0435\u0440\u0451\u043c\u00a0<code><span style=\"color: #0000ff;\">Text (\"Hello, World!\")<\/span><\/code>\u00a0\u0438 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043c \u0441\u0432\u043e\u0439 <code><span style=\"color: #0000ff;\">View<\/span><\/code> \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 3-\u0445\u00a0<code><span style=\"color: #0000ff;\">@Published<\/span><\/code> \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u00a0<code><span style=\"color: #0000ff;\">sourcesViewModel<\/span><\/code>\u00a0:<\/span><\/p>\n<ol>\n<li><span style=\"font-weight: 400;\">\u00a0\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435\u00a0<code><span style=\"color: #0000ff;\">SearchView<\/span><\/code> \u0434\u043b\u044f\u00a0\u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0438\u0441\u043a\u0430\u00a0<code><span style=\"color: #0000ff;\">searchString<\/span><\/code><\/span><span style=\"font-weight: 400;\">,<\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u00a0<code><span style=\"color: #0000ff;\">Picker<\/span><\/code>\u00a0\u0434\u043b\u044f\u00a0\u0441\u0442\u0440\u0430\u043d\u044b <code><span style=\"color: #0000ff;\">country<\/span><\/code><\/span><span style=\"font-weight: 400;\">,<\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u0441\u043f\u0438\u0441\u043e\u043a\u00a0<code><span style=\"color: #0000ff;\">SourcesList\u00a0<\/span><\/code>\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/span><\/li>\n<\/ol>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.20.32.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11993 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.20.32.png\" alt=\"\" width=\"1134\" height=\"956\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.20.32.png 1134w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.20.32-300x253.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.20.32-768x647.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.20.32-1024x863.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.20.32-356x300.png 356w\" sizes=\"auto, (max-width: 1134px) 100vw, 1134px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0443\u0436\u043d\u043e\u0435 \u043d\u0430\u043c <code><span style=\"color: #0000ff;\">View<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.52.14.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11994 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.52.14.png\" alt=\"\" width=\"1830\" height=\"1388\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.52.14.png 1830w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.52.14-300x228.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.52.14-768x583.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.52.14-1024x777.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-13-at-16.52.14-396x300.png 396w\" sizes=\"auto, (max-width: 1830px) 100vw, 1830px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u043f\u043e\u0438\u0441\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f <code>SearchView<\/code> \u0438 &#171;\u0441\u0442\u0440\u0430\u043d\u043e\u0439&#187; \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code><span style=\"color: #0000ff;\">Picker<\/span><\/code>, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0418\u0427\u0415\u0421\u041a\u0418.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 <code><span style=\"color: #0000ff;\">SourcesList<\/span><\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 &#8212;\u00a0 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 <code><span style=\"color: #0000ff;\">source.name<\/span><\/code> \u0438 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 <code><span style=\"color: #0000ff;\">source.description<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.22.05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11935 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.22.05.png\" alt=\"\" width=\"1342\" height=\"808\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.22.05.png 1342w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.22.05-300x181.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.22.05-768x462.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.22.05-1024x617.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.22.05-498x300.png 498w\" sizes=\"auto, (max-width: 1342px) 100vw, 1342px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">&#8230; \u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0441\u044b\u043b\u043a\u0438 <code><span style=\"color: #0000ff;\">NavigationLink<\/span><\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <code><span style=\"color: #0000ff;\">destination<\/span><\/code> \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u00a0<code><span style=\"color: #0000ff;\">DetailSourceView<\/span><\/code>, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0430\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">source<\/span><\/code> \u0438 \u043d\u0443\u0436\u043d\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 <code><span style=\"color: #0000ff;\">ArticlesViewModel<\/span><\/code>, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0435\u0439 <code><span style=\"color: #0000ff;\">articles<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.31.30.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11936 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.31.30.png\" alt=\"\" width=\"1204\" height=\"1408\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.31.30.png 1204w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.31.30-257x300.png 257w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.31.30-768x898.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-16.31.30-876x1024.png 876w\" sizes=\"auto, (max-width: 1204px) 100vw, 1204px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043a\u0430\u043a \u0438\u0437\u044f\u0449\u043d\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u0442\u0435\u0439 \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 <code><span style=\"color: #0000ff;\">source<\/span><\/code> \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432\u00a0<code><span style=\"color: #0000ff;\">SourcesList<\/span><\/code>. \u041d\u0430\u043c \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043d\u0430\u0448 \u0441\u0442\u0430\u0440\u044b\u0439 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 &#8212; \u043a\u043b\u0430\u0441\u0441\u00a0<code><span style=\"color: #0000ff;\">ArticlesViewModel<\/span><\/code>, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u0434\u0430\u0442\u044c\u00a0\u043e\u0431\u0430 &#171;\u0432\u0445\u043e\u0434\u043d\u044b\u0445&#187;\u00a0<code><span style=\"color: #0000ff;\">@Published<\/span><\/code> \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430:<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"> \u0438\u043d\u0434\u0435\u043a\u0441\u00a0<code><span style=\"color: #0000ff;\">indexEndpoint = 3<\/span><\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u043f\u0446\u0438\u044e\u00a0<code><span style=\"color: #0000ff;\">.articlesFromSource (_source:String)<\/span><\/code>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u0434\u043b\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 <code><span style=\"color: #0000ff;\">source<\/span><\/code>, <\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u0441\u0442\u0440\u043e\u043a\u0443\u00a0<code><span style=\"color: #0000ff;\">searchString<\/span><\/code>\u00a0\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (\u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u0435\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430) <code><span style=\"color: #0000ff;\">source.id<\/span><\/code>\u00a0:<\/span><\/li>\n<\/ul>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-17.34.50.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11937 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-17.34.50.png\" alt=\"\" width=\"1324\" height=\"802\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-17.34.50.png 1324w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-17.34.50-300x182.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-17.34.50-768x465.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-17.34.50-1024x620.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-17.34.50-495x300.png 495w\" sizes=\"auto, (max-width: 1324px) 100vw, 1324px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0412\u043e\u043e\u0431\u0449\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u0432\u0441\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<strong> <a href=\"https:\/\/github.com\/BestKora\/NewsApp\">NewsApp<\/a><\/strong>, \u0442\u043e \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u044f\u0432\u043d\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0441\u0442\u0430\u0442\u0435\u0439 \u0438\u043b\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 \u0441\u0430\u0439\u0442\u0430\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>. \u041c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e\u00a0<code><span style=\"color: #0000ff;\">@Published<\/span><\/code>\u00a0 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0430 <code>View Model<\/code> \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443: \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/span><\/p>\n<h1>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f <span style=\"color: #0000ff;\">UIImage<\/span> \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u044c\u0438 <span style=\"color: #0000ff;\">Article<\/span>.<\/h1>\n<p><span style=\"font-weight: 400;\">\u041c\u043e\u0434\u0435\u043b\u044c \u0441\u0442\u0430\u0442\u044c\u0438\u00a0<code><span style=\"color: #0000ff;\">Article<\/span><\/code>\u00a0\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>URL<\/code> \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0435\u0451 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u00a0<code><span style=\"color: #0000ff;\">urlToImage<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-04-at-20.48.19.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11914 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-04-at-20.48.19.png\" alt=\"\" width=\"1010\" height=\"316\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-04-at-20.48.19.png 1010w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-04-at-20.48.19-300x94.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-04-at-20.48.19-768x240.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-04-at-20.48.19-500x156.png 500w\" sizes=\"auto, (max-width: 1010px) 100vw, 1010px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e\u00a0<code>URL<\/code> \u043c\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0430\u043c\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f <span style=\"color: #0000ff;\">UIImage<\/span>\u00a0\u0441 \u0441\u0430\u0439\u0442\u0430\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u041d\u0430\u043c \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0430 \u044d\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043c \u0436\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u043c &#171;\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f&#187; <code><span style=\"color: #0000ff;\">ImageLoader<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u00a0<a href=\"https:\/\/bestkora.com\/IosDeveloper\/modern-networking-in-swift-5-with-urlsession-combine-and-codable\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432\u00a0<a href=\"https:\/\/developers.themoviedb.org\/3\/getting-started\/introduction\">TMDb<\/a>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.48.28.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12019 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.48.28.png\" alt=\"\" width=\"1174\" height=\"1008\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.48.28.png 1174w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.48.28-300x258.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.48.28-768x659.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.48.28-1024x879.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-13.48.28-349x300.png 349w\" sizes=\"auto, (max-width: 1174px) 100vw, 1174px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041b\u043e\u0433\u0438\u043a\u0430 \u044d\u0442\u043e\u0433\u043e &#171;\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439&#187; \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442 <code><span style=\"color: #0000ff;\">nil<\/span><\/code> <code>URL<\/code> \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u043e\u043d\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u043e\u0441\u044c, \u0442\u043e \u0435\u0441\u0442\u044c <code><span style=\"color: #0000ff;\">image == nil<\/span><\/code>. \u0415\u0441\u043b\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u043a\u0430\u043a\u0430\u044f-\u043b\u0438\u0431\u043e \u043e\u0448\u0438\u0431\u043a\u0430, \u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u0442\u043e \u0435\u0441\u0442\u044c <code><span style=\"color: #0000ff;\">image<\/span><\/code> \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0440\u0430\u0432\u043d\u044b\u043c <code><span style=\"color: #0000ff;\">nil<\/span><\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 <code>SwiftUI<\/code> \u043c\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code><span style=\"color: #0000ff;\">ArticleImage<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <code><span style=\"color: #0000ff;\">imageLoader<\/span><\/code>\u00a0\u043a\u043b\u0430\u0441\u0441\u0430 <code><span style=\"color: #0000ff;\">ImageLoader<\/span><\/code>. \u0415\u0441\u043b\u0438 \u0435\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code><span style=\"color: #0000ff;\">image<\/span><\/code>\u00a0\u043d\u0435 \u0440\u0430\u0432\u043d\u043e <code><span style=\"color: #0000ff;\">nil<\/span><\/code>, \u0442\u043e \u043e\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code><span style=\"color: #0000ff;\">Image (...)<\/span><\/code>, \u0430 \u0432\u043e\u0442 \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0440\u0430\u0432\u043d\u043e <code><span style=\"color: #0000ff;\">nil<\/span><\/code>, \u0442\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0435\u043c\u0443 \u0440\u0430\u0432\u043d\u043e \u0435\u0433\u043e <code><span style=\"color: #0000ff;\">url<\/span><\/code>&#8212; \u043b\u0438\u0431\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f &#8212; <code><span style=\"color: #0000ff;\">EmptyView()<\/span><\/code>, \u043b\u0438\u0431\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a <code><span style=\"color: #0000ff;\">Rectangle<\/span><\/code> \u0441 \u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0435\u043c\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u043c <code><span style=\"color: #0000ff;\">Text(\"Loading...\")<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-13.53.22.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11919 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-13.53.22.png\" alt=\"\" width=\"1142\" height=\"1344\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-13.53.22.png 1142w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-13.53.22-255x300.png 255w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-13.53.22-768x904.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-13.53.22-870x1024.png 870w\" sizes=\"auto, (max-width: 1142px) 100vw, 1142px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u042d\u0442\u0430 \u043b\u043e\u0433\u0438\u043a\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0434\u043b\u044f\u00a0<code><span style=\"color: #0000ff;\">url<\/span><\/code>,\u00a0 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442\u00a0<code><span style=\"color: #0000ff;\">nil<\/span><\/code> \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435\u00a0\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code><span style=\"color: #0000ff;\">image<\/span><\/code>, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0432\u00a0<a href=\"https:\/\/bestkora.com\/IosDeveloper\/modern-networking-in-swift-5-with-urlsession-combine-and-codable\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432\u00a0<a href=\"https:\/\/developers.themoviedb.org\/3\/getting-started\/introduction\">TMDb<\/a>. \u0421 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>\u00a0 \u0434\u0435\u043b\u043e \u043e\u0431\u0441\u0442\u043e\u0438\u0442 \u0438\u043d\u0430\u0447\u0435. \u0412 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439\u00a0\u043e\u0442\u00a0<code><span style=\"color: #0000ff;\">nil<\/span><\/code>\u00a0<code>URL<\/code> \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443 \u0437\u0430\u043a\u0440\u044b\u0442. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c\u00a0\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a <code><span style=\"color: #0000ff;\">Rectangle<\/span><\/code> \u0441 \u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0435\u043c\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u043c <code><span style=\"color: #0000ff;\">Text(\"Loading...\")<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0435\u043d:<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-14.32.39.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11920 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-14.32.39.png\" alt=\"\" width=\"1212\" height=\"1206\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-14.32.39.png 1212w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-14.32.39-150x150.png 150w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-14.32.39-300x300.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-14.32.39-768x764.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-14.32.39-1024x1019.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-14.32.39-301x300.png 301w\" sizes=\"auto, (max-width: 1212px) 100vw, 1212px\" \/><\/a>\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 \u044d\u0442\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u0435\u0441\u043b\u0438\u00a0<code>URL<\/code> \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u00a0\u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u00a0<code><span style=\"color: #0000ff;\">nil<\/span><\/code>,\u00a0\u0442\u043e \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u00a0<code><span style=\"color: #0000ff;\">image<\/span><\/code>\u00a0<code><span style=\"color: #0000ff;\">nil<\/span><\/code> \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u043a\u0430\u043a \u0442\u043e, \u0447\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u0438 \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0438 \u043c\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code><span style=\"color: #0000ff;\">image<\/span><\/code>. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0442\u044c \u044d\u0442\u0438 \u0434\u0432\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043a\u043b\u0430\u0441\u0441\u00a0<code><span style=\"color: #0000ff;\">ImageLoader<\/span><\/code>\u00a0\u043a \u0434\u0432\u0443\u043c \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0441\u044f <code><span style=\"color: #0000ff;\">@Published<\/span><\/code> \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u0435\u0449\u0451 \u043e\u0434\u043d\u043e:\u00a0<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">\u00a0<code><span style=\"color: #0000ff;\">@Published var noData = false<\/span><\/code>\u00a0&#8212; \u044d\u0442\u043e \u0431\u0443\u043b\u0435\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u0435 \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0435.<\/span><\/li>\n<\/ul>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-17.32.19.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11922 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-17.32.19.png\" alt=\"\" width=\"1018\" height=\"836\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-17.32.19.png 1018w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-17.32.19-300x246.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-17.32.19-768x631.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-17.32.19-365x300.png 365w\" sizes=\"auto, (max-width: 1018px) 100vw, 1018px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438&#187; \u0432 <code><span style=\"color: #0000ff;\">init<\/span><\/code> \u043b\u043e\u0432\u0438\u043c \u0432\u0441\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 <code><span style=\"color: #0000ff;\">Error<\/span><\/code>, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0438 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u0438\u0445 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u00a0<code><span style=\"color: #0000ff;\">@Published<\/span><\/code> \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435 <code><span style=\"color: #0000ff;\">self.noData = true<\/span><\/code>.\u00a0 \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code><span style=\"color: #0000ff;\">image<\/span><\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&#171;\u0418\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;\u00a0<code><span style=\"color: #0000ff;\">AnyPublisher&lt;UIImage?, Error&gt;<\/span><\/code>\u00a0\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435\u00a0<code><span style=\"color: #0000ff;\">url<\/span><\/code>\u00a0\u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code><span style=\"color: #0000ff;\">fetchImageErr (for url: URL?)<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.18.35.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11923 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.18.35.png\" alt=\"\" width=\"1102\" height=\"940\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.18.35.png 1102w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.18.35-300x256.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.18.35-768x655.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.18.35-1024x873.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.18.35-352x300.png 352w\" sizes=\"auto, (max-width: 1102px) 100vw, 1102px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 <code><span style=\"color: #0000ff;\">fetchImageErr<\/span><\/code> \u0441 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;\u00a0<code><span style=\"color: #0000ff;\">Future<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0422\u0418\u041f\u0410 <code><span style=\"color: #0000ff;\">Result<\/span><\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f. \u0423 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 &#8212; <code><span style=\"color: #0000ff;\">Promise<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0422\u0418\u041f\u0430\u00a0<code><span style=\"color: #0000ff;\">(Result&lt;Output, Failure&gt;) -&gt; Void<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.35.46.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11925 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.35.46.png\" alt=\"\" width=\"1064\" height=\"292\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.35.46.png 1064w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.35.46-300x82.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.35.46-768x211.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.35.46-1024x281.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-18.35.46-500x137.png 500w\" sizes=\"auto, (max-width: 1064px) 100vw, 1064px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 <code><span style=\"color: #0000ff;\">Future<\/span><\/code> \u043c\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043c \u0432 <code><span style=\"color: #0000ff;\">AnyPublisher &lt;UIImage?, Error&gt;<\/span><\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 &#171;\u0441\u0442\u0438\u0440\u0430\u043d\u0438\u044f \u0422\u0418\u041f\u0410&#187; <code><span style=\"color: #0000ff;\">eraseToAnyPublisher()<\/span><\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f\u00a0\u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 (\u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438, \u043d\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u0435\u0441\u0442\u044c):<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"><strong>0.<\/strong> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c <code><span style=\"color: #0000ff;\">url<\/span><\/code> \u043d\u0430 <code><span style=\"color: #0000ff;\">nil<\/span><\/code>\u00a0\u0438\u00a0<code><span style=\"color: #0000ff;\">noData<\/span><\/code> \u043d\u0430 <code><span style=\"color: #0000ff;\">true<\/span><\/code>\u00a0(\u0442\u043e \u0435\u0441\u0442\u044c \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f): \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0430\u043a, \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 &#8212; \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c <code><span style=\"color: #0000ff;\">url<\/span><\/code> \u0434\u0430\u043b\u0435\u0435 \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435,<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><strong>1.<\/strong> \u0441\u043e\u0437\u0434\u0430\u0435\u043c &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; <code><span style=\"color: #0000ff;\">dataTaskPublisher(for:)<\/span><\/code>, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 &#8212; <code><span style=\"color: #0000ff;\">url<\/span><\/code>, \u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code><span style=\"color: #0000ff;\">Output<\/span><\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0442\u0435\u0436 <code><span style=\"color: #0000ff;\">(data: Data, response: URLResponse)<\/span><\/code> \u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u00a0<code><span style=\"color: #0000ff;\">URLError<\/span><\/code>,<br \/>\n<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><strong>2.<\/strong> \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code><span style=\"color: #0000ff;\">tryMap { }<\/span><\/code>\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0440\u0442\u0435\u0436\u0430 <code><span style=\"color: #0000ff;\">(data: Data, response: URLResponse)<\/span><\/code>: \u0435\u0441\u043b\u0438 <code><span style=\"color: #0000ff;\">response.statusCode<\/span><\/code> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 <code><span style=\"color: #0000ff;\">200...299<\/span><\/code>, \u0442\u043e \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0431\u0435\u0440\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0435\u00a0<code><span style=\"color: #0000ff;\">data<\/span><\/code>. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 &#171;\u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c&#187; \u043e\u0448\u0438\u0431\u043a\u0443 (\u043d\u0435\u0432\u0430\u0436\u043d\u043e \u043a\u0430\u043a\u0443\u044e),<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><strong>3.<\/strong>\u00a0\u0432 <code><span style=\"color: #0000ff;\">map<\/span><\/code> \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 <code><span style=\"color: #0000ff;\">data<\/span><\/code> \u0432 <code><span style=\"color: #0000ff;\">UIImage<\/span><\/code>,<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><strong>4.<\/strong> \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 <code>main<\/code> \u043f\u043e\u0442\u043e\u043a, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438<code> UI<\/code><\/span><\/li>\n<li><span style=\"font-weight: 400;\">&#171;\u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u0441\u044f&#187; \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code><span style=\"color: #0000ff;\">sink<\/span><\/code> \u0438 \u0435\u0433\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439 <code><span style=\"color: #0000ff;\">receiveCompletion<\/span><\/code> \u0438 <code><span style=\"color: #0000ff;\">receiveValue<\/span>,<\/code><\/span><\/li>\n<\/ul>\n<p style=\"padding-left: 60px;\"><span style=\"font-weight: 400;\"><strong>5.<\/strong>\u00a0\u0435\u0441\u043b\u0438 \u0432\u00a0\u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">receiveCompletion<\/span><\/code>\u00a0\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 <code><span style=\"color: #ff6600;\">error<\/span><\/code>, \u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u043e \u043d\u0435\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code><span style=\"color: #0000ff;\">promise (<span style=\"color: #ff0000;\">.failure(error)<\/span>))<\/span><\/code>,<\/span><\/p>\n<p style=\"padding-left: 60px;\"><span style=\"font-weight: 400;\"><strong>6.<\/strong>\u00a0\u0432\u00a0\u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">receiveValue<\/span><\/code> \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u043e\u0431 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0444\u0438\u043b\u044c\u043c\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code><span style=\"color: #0000ff;\">promise (.success($0))<\/span><\/code>,\u00a0<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"><strong>7.<\/strong>\u00a0\u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443&#187; \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439\u00a0<code><span style=\"color: #0000ff;\">var subscriptions = Set&lt;AnyCancellable&gt;()<\/span><\/code>, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0435\u0451 \u0436\u0438\u0437\u043d\u0435\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 &#171;\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0436\u0438\u0437\u043d\u0438&#187; \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 <code><span style=\"color: #0000ff;\">ImageLoader<\/span><\/code>,<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><strong>8.<\/strong> &#171;\u0441\u0442\u0438\u0440\u0430\u0435\u043c&#187; \u0422\u0418\u041f &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <code><span style=\"color: #0000ff;\">AnyPublisher<\/span><\/code>.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a <code><span style=\"color: #0000ff;\">ArticleImage<\/span><\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e\u00a0<code><span style=\"color: #0000ff;\">@Published<\/span><\/code> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code><span style=\"color: #0000ff;\">noData<\/span><\/code>. \u0415\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435\u0442, \u0442\u043e \u043c\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c, \u0442\u043e \u0435\u0441\u0442\u044c <code><span style=\"color: #0000ff;\">EmptyView<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-19.09.58.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11926 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-19.09.58.png\" alt=\"\" width=\"1438\" height=\"1438\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-19.09.58.png 1438w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-19.09.58-150x150.png 150w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-19.09.58-300x300.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-19.09.58-768x768.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-19.09.58-1024x1024.png 1024w\" sizes=\"auto, (max-width: 1438px) 100vw, 1438px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u043c\u044b \u0443\u043f\u0430\u043a\u0443\u0435\u043c \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043a\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>\u00a0\u0432 <code><span style=\"color: #0000ff;\">TabView<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-20.54.34.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11929 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-20.54.34.png\" alt=\"\" width=\"1638\" height=\"1406\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-20.54.34.png 1638w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-20.54.34-300x258.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-20.54.34-768x659.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-20.54.34-1024x879.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-05-at-20.54.34-350x300.png 350w\" sizes=\"auto, (max-width: 1638px) 100vw, 1638px\" \/><\/a><\/p>\n<h1>\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0438 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 JSON \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u00a0<span style=\"font-weight: 400;\"><a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a><\/span>.<\/h1>\n<p><span style=\"font-weight: 400;\">\u041f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a> \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u0437\u0430\u0434\u0430\u043b\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 <code>API-key<\/code> \u0438\u043b\u0438, \u0438\u043c\u0435\u044f \u0442\u0430\u0440\u0438\u0444 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442, \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b\u0438 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u043b\u0438 \u0435\u0449\u0435 \u0447\u0442\u043e-\u0442\u043e. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>\u00a0\u0441\u043d\u0430\u0431\u0436\u0430\u0435\u0442 \u0432\u0430\u0441 HTTP \u043a\u043e\u0434\u043e\u043c \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c :<br \/>\n<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-15.45.17.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11951 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-15.45.17.png\" alt=\"\" width=\"1550\" height=\"516\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-15.45.17.png 1550w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-15.45.17-300x100.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-15.45.17-768x256.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-15.45.17-1024x341.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-15.45.17-500x166.png 500w\" sizes=\"auto, (max-width: 1550px) 100vw, 1550px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0418\u043d\u0430\u0447\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u0432\u0434\u0440\u0443\u0433 \u043d\u0438 \u0441 \u0442\u043e\u0433\u043e, \u043d\u0438 \u0441 \u0441\u0435\u0433\u043e, \u0441\u0435\u0440\u0432\u0435\u0440\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>\u00a0\u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043f\u043e\u043b\u043d\u043e\u043c \u043d\u0435\u0434\u043e\u0443\u043c\u0435\u043d\u0438\u0438 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c \u044d\u043a\u0440\u0430\u043d\u043e\u043c.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"> \u0414\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0441\u0442\u0430\u0442\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">[Article]<\/span><\/code> \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">[Source]<\/span><\/code> \u0441\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>\u00a0\u043c\u044b \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432\u0441\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0445 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043f\u0443\u0441\u0442\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b\u00a0<code><span style=\"color: #0000ff;\">[Article]()<\/span><\/code> \u0438\u00a0 \u00a0<code><span style=\"color: #0000ff;\">[Source]()<\/span><\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u044f \u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u0448\u0438\u0431\u043e\u043a, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e\u00a0 \u043c\u0435\u0442\u043e\u0434\u0430 <code><span style=\"color: #0000ff;\">fetchArticles (from endpoint: Endpoint) -&gt; AnyPublisher&lt;[Article], Never&gt;<\/span><\/code>\u00a0\u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u043a\u043b\u0430\u0441\u0441\u0435\u00a0<code><span style=\"color: #0000ff;\">NewsAPI<\/span><\/code>\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 <code><span style=\"color: #0000ff;\">fetchArticlesErr (from endpoint: Endpoint) -&gt; AnyPublisher&lt;[Article], NewsError&gt;<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0430\u0442\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">[Article]<\/span><\/code>, \u043d\u043e \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443\u00a0<code><span style=\"color: #0000ff;\">NewsError<\/span><\/code>:<\/span><\/p>\n<pre class=\"line-numbers\"><code class=\"language-swift\">func fetchArticlesErr(from endpoint: Endpoint) -&gt;\r\n                            AnyPublisher&lt;[Article], NewsError&gt; {\r\n\r\n. . . . . . . .\r\n}<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434, \u0442\u0430\u043a\u0436\u0435, \u043a\u0430\u043a \u0438 \u043c\u0435\u0442\u043e\u0434\u00a0<code><span style=\"color: #0000ff;\">fetchArticles<\/span><\/code>, \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 <code><span style=\"color: #0000ff;\">endpoint<\/span><\/code>\u00a0\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441\u0442\u0430\u0442\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">[Article]<\/span><\/code>, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438 <code><span style=\"color: #0000ff;\">Never,<\/span><\/code> \u0443 \u043d\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u0430\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u043c <code><span style=\"color: #0000ff;\">NewsError<\/span><\/code>: (\u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043a\u0430\u043a <a href=\"https:\/\/bestkora.com\/IosDeveloper\/modern-networking-in-swift-5-with-urlsession-combine-and-codable\/\">\u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c)<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.45.58.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11955 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.45.58.png\" alt=\"\" width=\"986\" height=\"312\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.45.58.png 986w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.45.58-300x95.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.45.58-768x243.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.45.58-500x158.png 500w\" sizes=\"auto, (max-width: 986px) 100vw, 986px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041d\u0430\u0447\u043d\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;\u00a0<code><span style=\"color: #0000ff;\">Future<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0422\u0418\u041f\u0410 <code><span style=\"color: #0000ff;\">Result<\/span><\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f. \u0423 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 &#8212; <code><span style=\"color: #0000ff;\">Promise<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0422\u0418\u041f\u0430\u00a0<code><span style=\"color: #0000ff;\">(Result&lt;Output, Failure&gt;) -&gt; Void<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.49.41.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11956 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.49.41.png\" alt=\"\" width=\"1136\" height=\"328\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.49.41.png 1136w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.49.41-300x87.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.49.41-768x222.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.49.41-1024x296.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.49.41-1000x288.png 1000w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.49.41-500x144.png 500w\" sizes=\"auto, (max-width: 1136px) 100vw, 1136px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 <code><span style=\"color: #0000ff;\">Future<\/span><\/code> \u043c\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043c \u0432 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043d\u0430\u043c &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;\u00a0<code><span style=\"color: #0000ff;\">AnyPublisher &lt;[Article], NewsError&gt;<\/span><\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 &#171;\u0441\u0442\u0438\u0440\u0430\u043d\u0438\u044f \u0422\u0418\u041f\u0410&#187; <code><span style=\"color: #0000ff;\">eraseToAnyPublisher()<\/span><\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043c \u0432\u0441\u0435 \u0448\u0430\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435\u00a0<code><span style=\"color: #0000ff;\">fetchArticles<\/span><\/code>, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u043c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.59.43.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11957 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.59.43.png\" alt=\"\" width=\"1208\" height=\"1416\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.59.43.png 1208w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.59.43-256x300.png 256w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.59.43-768x900.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-17.59.43-874x1024.png 874w\" sizes=\"auto, (max-width: 1208px) 100vw, 1208px\" \/><\/a><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"><strong>0.<\/strong> \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 <code><span style=\"color: #0000ff;\">endpoint<\/span><\/code>\u00a0\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c <code>URL<\/code> <code><span style=\"color: #0000ff;\">endpoint.absoluteURL<\/span><\/code> \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0443\u0436\u043d\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c <code><span style=\"color: #0000ff;\">url<\/span><\/code> \u043d\u0430 <code><span style=\"color: #0000ff;\">nil:<\/span><\/code> \u0435\u0441\u043b\u0438 <code><span style=\"color: #0000ff;\">nil<\/span><\/code>, \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 <code><span style=\"color: #ff6600;\">.urlError<\/span><\/code>, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 &#8212; \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c <code><span style=\"color: #0000ff;\">url<\/span><\/code> \u0434\u0430\u043b\u0435\u0435 \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435,<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><strong>1.<\/strong> \u0441\u043e\u0437\u0434\u0430\u0435\u043c &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; <code><span style=\"color: #0000ff;\">dataTaskPublisher(for:)<\/span><\/code>, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 &#8212; <code><span style=\"color: #0000ff;\">url<\/span><\/code>, \u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code><span style=\"color: #0000ff;\">Output<\/span><\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0442\u0435\u0436 <code><span style=\"color: #0000ff;\">(data: Data, response: URLResponse)<\/span><\/code> \u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u00a0<code><span style=\"color: #0000ff;\">URLError<\/span><\/code>,<br \/>\n<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><strong>2.<\/strong> \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code><span style=\"color: #0000ff;\">tryMap { }<\/span><\/code>\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0440\u0442\u0435\u0436\u0430 <code><span style=\"color: #0000ff;\">(data: Data, response: URLResponse)<\/span><\/code>: \u0435\u0441\u043b\u0438 <code><span style=\"color: #0000ff;\">response.statusCode<\/span><\/code> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 <code><span style=\"color: #0000ff;\">200...299<\/span><\/code>, \u0442\u043e \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0431\u0435\u0440\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0435\u00a0<code><span style=\"color: #0000ff;\">data<\/span><\/code>. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 &#171;\u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c&#187; \u043e\u0448\u0438\u0431\u043a\u0443 <code><span style=\"color: #ff6600;\">.responseError<\/span><\/code>, \u0441\u043d\u0430\u0431\u0436\u0430\u044f \u0435\u0451\u00a0\u0434\u0430\u043d\u043d\u044b\u0435\u00a0<code><span style=\"color: #0000ff;\">data<\/span><\/code>, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 <code><span style=\"color: #ff6600;\">String<\/span><\/code>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0438\u0441\u0442\u0438\u043d\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430,<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><strong>3.<\/strong> \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u043c <code>JSON<\/code> \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u041c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439\u00a0<code><span style=\"color: #0000ff;\">NewsResponse<\/span><\/code>,<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><strong>4.<\/strong> \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 <code>main<\/code> \u043f\u043e\u0442\u043e\u043a, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438<code> UI<\/code><\/span><\/li>\n<li><span style=\"font-weight: 400;\">&#171;\u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u0441\u044f&#187; \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code><span style=\"color: #0000ff;\">sink<\/span><\/code> \u0438 \u0435\u0433\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439 <code><span style=\"color: #0000ff;\">receiveCompletion<\/span><\/code> \u0438 <code><span style=\"color: #0000ff;\">receiveValue<\/span>,<\/code><\/span><\/li>\n<\/ul>\n<p style=\"padding-left: 60px;\"><span style=\"font-weight: 400;\"><strong>5.<\/strong>\u00a0\u0435\u0441\u043b\u0438 \u0432\u00a0\u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">receiveCompletion<\/span><\/code>\u00a0\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 <code><span style=\"color: #ff6600;\">error<\/span><\/code>, \u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u043e \u043d\u0435\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code><span style=\"color: #0000ff;\">promise (<span style=\"color: #ff0000;\">.failure(...)<\/span>))<\/span><\/code>,<\/span><\/p>\n<p style=\"padding-left: 60px;\"><span style=\"font-weight: 400;\"><strong>6.<\/strong>\u00a0\u0432\u00a0\u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">receiveValue<\/span><\/code> \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u043e\u0431 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441\u0442\u0430\u0442\u0435\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code><span style=\"color: #0000ff;\">promise (.success($0.articles))<\/span><\/code>,\u00a0<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"><strong>7.<\/strong>\u00a0\u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443&#187; \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439\u00a0<code><span style=\"color: #0000ff;\">var subscriptions = Set&lt;AnyCancellable&gt;()<\/span><\/code>, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0435\u0451 \u0436\u0438\u0437\u043d\u0435\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 &#171;\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0436\u0438\u0437\u043d\u0438&#187; \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 <code><span style=\"color: #0000ff;\">NewsAPI<\/span><\/code>,<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><strong>8.<\/strong> &#171;\u0441\u0442\u0438\u0440\u0430\u0435\u043c&#187; \u0422\u0418\u041f &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <code><span style=\"color: #0000ff;\">AnyPublisher<\/span><\/code>.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044c&#187;\u00a0<code><span style=\"color: #0000ff;\">dataTaskPublisher(for:)<\/span><\/code> <a href=\"https:\/\/oleb.net\/2020\/urlsession-publisher\/\">\u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f<\/a> \u043e\u0442 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 <code><span style=\"color: #0000ff;\">dataTask<\/span><\/code> \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043a\u043e\u0433\u0434\u0430 <code><span style=\"color: #0000ff;\">response.statusCode<\/span><\/code>\u00a0\u041d\u0415 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 <code><span style=\"color: #0000ff;\">200...299<\/span><\/code>, \u043e\u043d \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u00a0\u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0440\u0442\u0435\u0436\u0430 <code><span style=\"color: #0000ff;\">(data: Data, response: URLResponse)<\/span><\/code>, \u0430 \u043d\u0435\u00a0\u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u0432\u0438\u0434\u0435 <code><span style=\"color: #0000ff;\">(Error, URLResponse?)<\/span><\/code>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 <code><span style=\"color: #0000ff;\">data<\/span><\/code>.\u00a0&#171;\u0418\u0437\u0434\u0430\u0442\u0435\u043b\u044c&#187; <code><span style=\"color: #0000ff;\">dataTaskPublisher(for:)<\/span><\/code>\u00a0\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443\u00a0<code><span style=\"color: #0000ff;\">URLError<\/span><\/code>, \u0435\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 (\u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u0437\u0430\u043f\u0440\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 <code>ATS<\/code> \u0438 \u0442.\u0434.) .<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432<code> SwiftUI<\/code>, \u0442\u043e \u043d\u0443\u0436\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f <code>View Model<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043d\u0430\u0437\u043e\u0432\u0435\u043c\u00a0<code><span style=\"color: #0000ff;\">ArticlesViewModelErr<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.05.08.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11958 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.05.08.png\" alt=\"\" width=\"1066\" height=\"1582\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.05.08.png 1066w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.05.08-202x300.png 202w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.05.08-768x1140.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.05.08-690x1024.png 690w\" sizes=\"auto, (max-width: 1066px) 100vw, 1066px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 \u043a\u043b\u0430\u0441\u0441\u0435\u00a0<code><span style=\"color: #0000ff;\">ArticlesViewModelErr<\/span><\/code>, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b <code><span style=\"color: #0000ff;\">ObservableObject<\/span><\/code>,\u00a0\u0443 \u043d\u0430\u0441 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0427\u0415\u0422\u042b\u0420\u0415\u00a0<code><span style=\"color: #0000ff;\">@Published<\/span><\/code> \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430: <\/span><\/p>\n<ol>\n<li><span style=\"font-weight: 400;\"><code><span style=\"color: #0000ff;\">@Published var indexEndpoint: Int<\/span><\/code> &#8212; \u044d\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441 <code><span style=\"color: #0000ff;\">Endpoint<\/span><\/code> (\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0435\u0433\u043e &#171;\u0432\u0445\u043e\u0434\u043d\u044b\u043c&#187;, \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 <code><span style=\"color: #0000ff;\">View<\/span><\/code>),\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><code><span style=\"color: #0000ff;\">@Published var searchString: String<\/span><\/code> &#8212; \u044d\u0442\u043e \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u0441\u043c\u044b\u0441\u043b \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442\u00a0<code><span style=\"color: #0000ff;\">Endpoint<\/span><\/code>: \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c &#171;\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f&#187; \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439. \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 (\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u044d\u0442\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c &#171;\u0432\u0445\u043e\u0434\u043d\u044b\u043c&#187;, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 <code><span style=\"color: #0000ff;\">View<\/span><\/code>),\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u00a0<code><span style=\"color: #0000ff;\">@Published var articles: [Article]<\/span><\/code>\u00a0&#8212; \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 (\u0443\u0441\u043b\u043e\u0432\u043d\u043e &#171;\u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0435&#187;, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0430\u0439\u0442\u0430\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>\u00a0) <\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u00a0\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u00a0<code><span style=\"color: #0000ff;\">@Published var articlesError: NewsError?<\/span><\/code>\u00a0&#8212; \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u044d\u0442\u0430\u043f\u0435\u00a0 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0430\u0439\u0442\u0430\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">\u041f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 <code><span style=\"color: #0000ff;\">ArticlesViewModelErr<\/span><\/code> \u043c\u044b \u043e\u043f\u044f\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0442\u044f\u043d\u0443\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043e\u0442 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439&#187;\u00a0<code><span style=\"color: #0000ff;\">$indexEndpoint<\/span><\/code>\u00a0\u0438\u00a0<code><span style=\"color: #0000ff;\">$searchString<\/span><\/code> \u0434\u043e \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;\u00a0<code><span style=\"color: #0000ff;\">AnyPublisher&lt;[Article],NewsError&gt;<\/span><\/code>, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u0441\u044f&#187; \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u0430&#187; <code><span style=\"color: #0000ff;\">sink<\/span><\/code> \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043b\u0438\u0431\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0430\u0442\u0435\u0439 <code><span style=\"color: #0000ff;\">articles<\/span><\/code>, \u043b\u0438\u0431\u043e \u043e\u0448\u0438\u0431\u043a\u0443\u00a0<code><span style=\"color: #0000ff;\">articlesError<\/span><\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 \u043d\u0430\u0448\u0435\u043c <span style=\"color: #0000ff;\">NewsAPI<\/span> \u043c\u044b \u0443\u0436\u0435 \u0441\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u00a0 \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<span style=\"color: #0000ff;\">fetchArticlesErr (from endpoint: Endpoint)<\/span>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;\u00a0<span style=\"color: #0000ff;\">AnyPublisher&lt;[Article], NewsError&gt;<\/span>, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <span style=\"color: #0000ff;\">endpoint<\/span>, \u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a\u0438\u043c-\u0442\u043e <\/span><span style=\"font-weight: 400;\">\u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439&#187;\u00a0<code><span style=\"color: #0000ff;\">$indexEndpoint<\/span><\/code> \u00a0\u0438\u00a0<code><span style=\"color: #0000ff;\">$searchString<\/span><\/code>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0438\u0445 \u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code><span style=\"color: #0000ff;\">endpoint<\/span><\/code>.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u043c &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439&#187;\u00a0<code><span style=\"color: #0000ff;\">$indexEndpoint<\/span><\/code>\u00a0\u0438\u00a0<code><span style=\"color: #0000ff;\">$searchString<\/span><\/code>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 <code>Combine<\/code> \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u00a0<code><span style=\"color: #0000ff;\">Publishers.CombineLatest<\/span><\/code><\/span>:<\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.25.46.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11959 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.25.46.png\" alt=\"\" width=\"924\" height=\"196\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.25.46.png 924w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.25.46-300x64.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.25.46-768x163.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.25.46-500x106.png 500w\" sizes=\"auto, (max-width: 924px) 100vw, 924px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0422\u0418\u041f \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0432\u043d\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u043c\u0443\u00a0<code><span style=\"color: #0000ff;\">NewsError<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.30.01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11960 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.30.01.png\" alt=\"\" width=\"1050\" height=\"92\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.30.01.png 1050w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.30.01-300x26.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.30.01-768x67.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.30.01-1024x90.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.30.01-500x44.png 500w\" sizes=\"auto, (max-width: 1050px) 100vw, 1050px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">fetchArticlesErr (from endpoint: Endpoint)<\/span><\/code> \u0438\u0437\u00a0\u043d\u0430\u0448\u0435\u0433\u043e\u00a0<code><span style=\"color: #0000ff;\">NewsAPI<\/span><\/code>. \u041a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u00a0<code><span style=\"color: #0000ff;\">flatMap<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.32.40.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11961 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.32.40.png\" alt=\"\" width=\"1054\" height=\"290\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.32.40.png 1054w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.32.40-300x83.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.32.40-768x211.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.32.40-1024x282.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.32.40-500x138.png 500w\" sizes=\"auto, (max-width: 1054px) 100vw, 1054px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0417\u0430\u0442\u0435\u043c \u043c\u044b &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u0441\u044f&#187; \u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u0432\u043d\u043e\u0432\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u0430&#187; <code><span style=\"color: #0000ff;\">sink<\/span><\/code> \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f <code><span style=\"color: #0000ff;\">receiveCompletion<\/span><\/code> \u0438 <code><span style=\"color: #0000ff;\">receiveValue<\/span><\/code> \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0442 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u043b\u0438\u0431\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u00a0\u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441\u0442\u0430\u0442\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">articles<\/span><\/code>, \u043b\u0438\u0431\u043e \u043e\u0448\u0438\u0431\u043a\u0438 <code><span style=\"color: #0000ff;\">articlesError<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.34.36.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11962 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.34.36.png\" alt=\"\" width=\"1000\" height=\"554\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.34.36.png 1000w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.34.36-300x166.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.34.36-768x425.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.34.36-500x277.png 500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 &#171;\u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u0430&#187; \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a <code><span style=\"color: #0000ff;\">init()<\/span><\/code> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code><span style=\"color: #0000ff;\">cancellableSet<\/span><\/code>. \u0418\u043d\u0430\u0447\u0435 \u043c\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u043c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code><span style=\"color: #0000ff;\">articles<\/span><\/code> \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0443 <code><span style=\"color: #0000ff;\">articlesError<\/span><\/code> \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f <code><span style=\"color: #0000ff;\">init()<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.37.41.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11963 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.37.41.png\" alt=\"\" width=\"978\" height=\"598\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.37.41.png 978w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.37.41-300x183.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.37.41-768x470.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-18.37.41-491x300.png 491w\" sizes=\"auto, (max-width: 978px) 100vw, 978px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043f\u0440\u0438 \u043d\u0430\u0431\u043e\u0440\u0435 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438\u00a0<code><span style=\"color: #0000ff;\">searchString<\/span><\/code>, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0430\u043c\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0438\u0441\u043a\u0430\u00a0<code><span style=\"color: #0000ff;\">$searchString<\/span><\/code>, \u0430 \u0435\u0433\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <code><span style=\"color: #0000ff;\">validString<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.22.44.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11881 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.22.44.png\" alt=\"\" width=\"1008\" height=\"222\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.22.44.png 1008w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.22.44-300x66.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.22.44-768x169.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.22.44-500x110.png 500w\" sizes=\"auto, (max-width: 1008px) 100vw, 1008px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">&#171;\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430&#187; \u043d\u0430 \u0410\u0421\u0418\u041d\u0425\u0420\u041e\u041d\u041d\u041e\u0413\u041e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0432 <code><span style=\"color: #0000ff;\">init()<\/span><\/code>, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u201c\u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430\u201d \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430\u00a0<code><span style=\"color: #0000ff;\">ArticlesViewModelErr<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11882 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25.png\" alt=\"\" width=\"1026\" height=\"700\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25.png 1026w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25-300x205.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25-768x524.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25-1024x699.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-02-at-18.28.25-440x300.png 440w\" sizes=\"auto, (max-width: 1026px) 100vw, 1026px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u0438 \u043d\u0430\u0448\u0435\u0433\u043e <code>UI<\/code>\u00a0\u0441 \u0446\u0435\u043b\u044c\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 <code>SwiftUI<\/code>\u00a0\u0432 \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0435\u0439\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435\u00a0<code><span style=\"color: #0000ff;\">ContentVieArticles <\/span><\/code>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u0443\u044e, \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e\u00a0<code>View Model<\/code>, \u043b\u0438\u0448\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0431\u0443\u043a\u0432\u044b &#171;Err&#187;. \u042d\u0442\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430\u00a0\u00a0<code><span style=\"color: #0000ff;\">ArticlesViewModelErr<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 &#171;\u0443\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442&#187; \u043e\u0448\u0438\u0431\u043a\u0443 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\/\u0438\u043b\u0438 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-21.37.20.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11965 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-21.37.20.png\" alt=\"\" width=\"1278\" height=\"1368\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-21.37.20.png 1278w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-21.37.20-280x300.png 280w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-21.37.20-768x822.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-09-at-21.37.20-957x1024.png 957w\" sizes=\"auto, (max-width: 1278px) 100vw, 1278px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0418 \u0435\u0449\u0451 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u043a\u0430\u0437 \u044d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u00a0<code><span style=\"color: #0000ff;\">Alert<\/span><\/code>\u00a0\u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u044f \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 <code>API<\/code> \u043a\u043b\u044e\u0447:<\/span><\/p>\n<pre class=\"line-numbers\"><code class=\"language-swift\">struct APIConstants {\r\n    \/\/ News  API key url: https:\/\/newsapi.org\r\n    static let apiKey: String = \"API_KEY\" \r\n    \r\n   .  .  .  .  .  .  .  .  .  .  .  .  .\r\n}<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">&#8230; \u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:<br \/>\n<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.33.13.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11966 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.33.13.png\" alt=\"\" width=\"1206\" height=\"958\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.33.13.png 1206w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.33.13-300x238.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.33.13-768x610.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.33.13-1024x813.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.33.13-378x300.png 378w\" sizes=\"auto, (max-width: 1206px) 100vw, 1206px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0415\u0441\u043b\u0438 \u043b\u0438\u043c\u0438\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d,\u00a0 <\/span><span style=\"font-weight: 400;\">\u0442\u043e\u00a0 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.35.09.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11967 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.35.09.png\" alt=\"\" width=\"1094\" height=\"1054\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.35.09.png 1094w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.35.09-300x289.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.35.09-768x740.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.35.09-1024x987.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.35.09-311x300.png 311w\" sizes=\"auto, (max-width: 1094px) 100vw, 1094px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u043a \u043c\u0435\u0442\u043e\u0434\u0443\u00a0\u00a0\u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0441\u0442\u0430\u0442\u0435\u0439\u00a0<code><span style=\"color: #0000ff;\">[Article] <\/span><\/code>\u00a0\u0441\u00a0\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439\u00a0<code><span style=\"color: #0000ff;\">NewsError<\/span><\/code>,\u00a0\u00a0\u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043a\u043e\u0434,\u00a0 \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u00a0<code>Generic<\/code>\u00a0&#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; <code><span style=\"color: #0000ff;\">AnyPublisher&lt;T,NewsError&gt;<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e\u00a0<code><span style=\"color: #0000ff;\">url<\/span><\/code> \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 <code>JSON<\/code> \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 \u0435\u0451 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 <code><span style=\"color: #0000ff;\">Codable<\/span><\/code> \u041c\u043e\u0434\u0435\u043b\u0438 <code><span style=\"color: #0000ff;\">T<\/span><\/code>\u00a0\u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435\u00a0<code><span style=\"color: #0000ff;\">NewsError<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.53.12.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11968 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.53.12.png\" alt=\"\" width=\"1156\" height=\"602\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.53.12.png 1156w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.53.12-300x156.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.53.12-768x400.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.53.12-1024x533.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-10.53.12-500x260.png 500w\" sizes=\"auto, (max-width: 1156px) 100vw, 1156px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041a\u0430\u043a \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;, \u0435\u0441\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f <code><span style=\"color: #0000ff;\">url<\/span><\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <code><span style=\"color: #0000ff;\">Endpoint<\/span><\/code> \u0434\u043b\u044f \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439\u00a0\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>\u00a0\u0438\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0430\u00a0<code><span style=\"color: #0000ff;\">country<\/span><\/code> \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u041c\u043e\u0434\u0435\u043b\u0438 &#8212; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u0442\u0435\u0439 \u0438\u043b\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-11.17.35.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11971 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-11.17.35.png\" alt=\"\" width=\"1172\" height=\"1108\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-11.17.35.png 1172w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-11.17.35-300x284.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-11.17.35-768x726.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-11.17.35-1024x968.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-11.17.35-317x300.png 317w\" sizes=\"auto, (max-width: 1172px) 100vw, 1172px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-13.16.44.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11972 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-13.16.44.png\" alt=\"\" width=\"1214\" height=\"1094\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-13.16.44.png 1214w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-13.16.44-300x270.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-13.16.44-768x692.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-13.16.44-1024x923.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-10-at-13.16.44-333x300.png 333w\" sizes=\"auto, (max-width: 1214px) 100vw, 1214px\" \/><\/a><\/p>\n<h1>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435.<\/h1>\n<p><span style=\"font-weight: 400;\">\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u00a0\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>, \u043c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0430\u043c\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u00a0\u0432\u00a0<a href=\"https:\/\/bestkora.com\/IosDeveloper\/modern-networking-in-swift-5-with-urlsession-combine-and-codable\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>\u00a0\u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432\u00a0<a href=\"https:\/\/developers.themoviedb.org\/3\/getting-started\/introduction\">TMDb<\/a>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0422\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0438 \u0432\u00a0<a href=\"https:\/\/bestkora.com\/IosDeveloper\/modern-networking-in-swift-5-with-urlsession-combine-and-codable\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>\u00a0\u043c\u044b \u043e\u043f\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u043a\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e <code>Generic<\/code> &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; <code><span style=\"color: #0000ff;\">AnyPublisher&lt;T, Never&gt;<\/span><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 <code>JSON<\/code> \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 \u0435\u0451 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 <code><span style=\"color: #0000ff;\">Codable<\/span><\/code> \u041c\u043e\u0434\u0435\u043b\u0438 <code><span style=\"color: #0000ff;\">T<\/span><\/code>\u00a0\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e\u00a0<code><span style=\"color: #0000ff;\">url<\/span><\/code>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-18.23.13.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11939 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-18.23.13.png\" alt=\"\" width=\"1200\" height=\"296\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-18.23.13.png 1200w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-18.23.13-300x74.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-18.23.13-768x189.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-18.23.13-1024x253.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-02-06-at-18.23.13-500x123.png 500w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0435\u0433\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;\u00a0<code><span style=\"color: #0000ff;\">AnyPublisher&lt;[Article], Never&gt;<\/span><\/code>, \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0449\u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440 \u0441\u0442\u0430\u0442\u0435\u0439, \u0438 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187;\u00a0\u00a0<code><span style=\"color: #0000ff;\">AnyPublisher&lt;[Source], Never&gt;<\/span><\/code>, \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>:<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.19.19.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11857 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.19.19.png\" alt=\"\" width=\"1098\" height=\"834\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.19.19.png 1098w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.19.19-300x228.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.19.19-768x583.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.19.19-1024x778.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/01\/Screenshot-2020-01-31-at-20.19.19-395x300.png 395w\" sizes=\"auto, (max-width: 1098px) 100vw, 1098px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439&#187;, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e &#171;\u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c&#187; \u0432 <code><span style=\"color: #0000ff;\">ObservableObject<\/span><\/code> \u043a\u043b\u0430\u0441\u0441\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0432\u043e\u0438\u0445 <code><span style=\"color: #0000ff;\">@Published<\/span><\/code> \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u00a0\u00a0<code>UI<\/code>, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>SwiftUI<\/code>. \u042d\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u00a0<code>View Model<\/code>.<br \/>\n\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 <code>View Model<\/code> \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0441\u0442\u0430\u0442\u0435\u0439 <code><span style=\"color: #0000ff;\">articles<\/span><\/code> \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u00a0<code><span style=\"color: #0000ff;\">indexEndpoint<\/span><\/code>\u00a0\u043d\u0443\u0436\u043d\u043e\u0439 \u043d\u0430\u043c\u00a0\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438\u00a0<code><span style=\"color: #0000ff;\">searchString<\/span><\/code>:<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12023 size-full\" src=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30.png\" alt=\"\" width=\"1566\" height=\"1274\" srcset=\"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30.png 1566w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30-300x244.png 300w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30-768x625.png 768w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30-1024x833.png 1024w, https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-25-at-14.44.30-369x300.png 369w\" sizes=\"auto, (max-width: 1566px) 100vw, 1566px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u042d\u0442\u0430 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0430\u044f <code>View Model<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043d\u0430\u0431\u043e\u0440\u044b \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00a0\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 <a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>\u00a0:<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438, <\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u043d\u043e\u0432\u043e\u0441\u0442\u0438, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 (<code>sports<\/code>, <code>healthy<\/code>, <code>science<\/code>, <code>business<\/code>, <code>technology<\/code>)\u00a0, <\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u043d\u043e\u0432\u043e\u0441\u0442\u0438, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (<code>CNN<\/code>, <code>ABC News<\/code>, <code>Fox News <\/code>\u0438 \u0442.\u0434.)\u00a0, <\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u043b\u044e\u0431\u044b\u0445 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u0438\u044e <code><span style=\"color: #0000ff;\">searchFilter<\/span><\/code>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u043c\u0443\u0441\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0441\u0442\u0430\u0442\u044c\u0438,<\/span><\/li>\n<li><span style=\"font-weight: 400;\">\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u0441\u043e\u0437\u0434\u0430\u0451\u043c &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f&#187; <code><span style=\"color: #0000ff;\">AnyPublisher&lt;UIImage?, Error&gt;<\/span><\/code>\u00a0\u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439\u00a0\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 <code>URL<\/code> \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u00a0<code><span style=\"color: #0000ff;\">UIImage<\/span><\/code>. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u0442\u043e \u043e\u043d\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0448\u0438\u043c &#171;\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u043c&#187; \u0438 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0435\u0433\u043e <code>URL<\/code> \u043d\u0435 \u0440\u0430\u0432\u0435\u043d <code><span style=\"color: #0000ff;\">nil<\/span><\/code>. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439\u00a0\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org <\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0430\u0433\u0435\u043d\u0441\u0442\u0432\u0430\u043c\u0438, \u0430 \u043e\u043d\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0433\u0443\u0442 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u00a0 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0451 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f <code>private<\/code> \u0434\u043e\u0441\u0442\u0443\u043f\u0430.\u00a0\u00a0<\/span><span style=\"font-weight: 400;\">\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439\u00a0\u043a\u044d\u0448\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443\u00a0<a href=\"https:\/\/newsapi.org\/\">NewsAPI.org<\/a>, \u043a\u043e\u0433\u0434\u0430, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0430\u043d \u043a\u043b\u044e\u0447 <code>API-key<\/code> \u0438\u043b\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0435 \u0442\u0430\u0440\u0438\u0444\u043e\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u041a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 <strong><a href=\"https:\/\/github.com\/BestKora\/NewsApp\">Github<\/a><\/strong>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0421\u0441\u044b\u043b\u043a\u0438:<\/span><\/p>\n<p class=\"post-full-title\"><strong><a href=\"https:\/\/www.vadimbulavin.com\/modern-networking-in-swift-5-with-urlsession-combine-framework-and-codable\/\">Modern Networking in Swift 5 with URLSession, Combine and Codable.<\/a><\/strong><\/p>\n<h1><a href=\"https:\/\/oleb.net\/2020\/urlsession-publisher\/\">URLSession.DataTaskPublisher\u2019s failure type<\/a><\/h1>\n<p><a href=\"https:\/\/store.raywenderlich.com\/products\/combine-asynchronous-programming-with-swift\"><strong>Combine: Asynchronous Programming with Swift<\/strong><\/a><\/p>\n<p><a href=\"https:\/\/bestkora.com\/IosDeveloper\/swiftui-combine-vmeste-luchshe-pochemu-swiftui-i-combine-pomogut-vam-sozdavat-bolee-luchshie-prilozheniya\/\"><span style=\"font-weight: 400;\"><strong>&#171;SwiftUI &amp; Combine: \u041b\u0443\u0447\u0448\u0435 \u0432\u043c\u0435\u0441\u0442\u0435&#187;<\/strong><\/span><\/a><\/p>\n<p><strong><a href=\"https:\/\/developer.apple.com\/videos\/play\/wwdc2019\/722\/\">Introducing Combine &#8212; WWDC 2019 &#8212; Videos &#8212; Apple Developer. session 722 <\/a><\/strong><\/p>\n<p><strong><a href=\"https:\/\/drive.google.com\/file\/d\/1O4QARAjjFEjjH9_EiDIuUqoalq0rL8PS\/view?usp=sharing\">(\u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442 \u0441\u0435\u0441\u0441\u0438\u0438 722 &#171;\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 Combine&#187; \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435)<\/a><\/strong><\/p>\n<p><a href=\"https:\/\/developer.apple.com\/videos\/play\/wwdc2019\/721\"><strong>Combine in Practice &#8212; WWDC 2019 &#8212; Videos &#8212; Apple Developer. session 721<\/strong><\/a><\/p>\n<p><strong><a href=\"https:\/\/docs.google.com\/document\/d\/1Klsc_7OLx_NWQ-vj6WbdyrmJG1DmoqAAoxLoVB2lbaA\/edit?usp=sharing\">(\u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442 \u0441\u0435\u0441\u0441\u0438\u0438 721 &#171;\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 Combine&#187; \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435)<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 NewsAPI.org. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u00a0\u00a0\u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432\u00a0TMDb\u00a0\u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u00a0Combine \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432\u00a0\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0445 \u0432\u043e\u00a0View Model\u00a0\u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f UI, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0SwiftUI.\u00a0\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043c \u0442\u0443 \u0436\u0435 \u0441\u0430\u043c\u0443\u044e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e &hellip; <a href=\"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/\">\u0427\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[60,55,54],"tags":[],"class_list":["post-11740","post","type-post","status-publish","format-standard","hentry","category-combine","category-ios-13","category-swiftui"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 NewsAPI.org \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f Combine \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0445 \u0432\u043e View Model \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f UI, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SwiftUI. \" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"tatiana.kornilova@gmail.com\"\/>\n\t<meta name=\"keywords\" content=\"combine,apple,publisher,subscriber,swift 5,http request,cancellable,anycancellable,receivecompletion,receivevalue,future,promise,datataskpublisher,assing(to:,on:),sink,swiftui,observableobject,view model,erasetoanypublisher,objectwillchange,identifiable,@observedobject,\u00a0tmdb\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"ru_RU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"\u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 iOS+Swift \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. | \u0420\u0443\u0441\u0441\u043a\u0438\u0439 \u043d\u0435\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442 \u043b\u0435\u043a\u0446\u0438\u0439 \u0421\u0442\u044d\u043d\u0444\u043e\u0440\u0434\u0441\u043a\u043e\u0433\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0430 &quot; \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439&quot; 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 , 2023,  2024,  2025  \u0438 2026 \u0433\u0433., \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043c\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0435\u0439 \u043a\u0443\u0440\u0441\u043e\u0432 \u043a \u043d\u043e\u0432\u044b\u043c \u0432\u0435\u0440\u0441\u0438\u044f\u043c Swift, Objective-C \u0438 iOS.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e URLSession, Combine \u0438 Codable. \u0427\u0430\u0441\u0442\u044c 2. | \u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 iOS+Swift \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 NewsAPI.org \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f Combine \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0445 \u0432\u043e View Model \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f UI, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SwiftUI. \" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-05T19:18:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-10T08:39:33+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e URLSession, Combine \u0438 Codable. \u0427\u0430\u0441\u0442\u044c 2. | \u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 iOS+Swift \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.\" \/>\n\t\t<meta name=\"twitter:description\" content=\"\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 NewsAPI.org \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f Combine \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0445 \u0432\u043e View Model \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f UI, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SwiftUI. \" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\\\/#article\",\"name\":\"\\u0421\\u043e\\u0432\\u0440\\u0435\\u043c\\u0435\\u043d\\u043d\\u044b\\u0439 \\u043a\\u043e\\u0434 \\u0434\\u043b\\u044f \\u0432\\u044b\\u043f\\u043e\\u043b\\u043d\\u0435\\u043d\\u0438\\u044f HTTP \\u0437\\u0430\\u043f\\u0440\\u043e\\u0441\\u043e\\u0432 \\u0432 Swift 5 \\u0441 \\u043f\\u043e\\u043c\\u043e\\u0449\\u044c\\u044e URLSession, Combine \\u0438 Codable. \\u0427\\u0430\\u0441\\u0442\\u044c 2. | \\u041e\\u0431\\u0443\\u0447\\u0430\\u044e\\u0449\\u0438\\u0439 \\u043a\\u0443\\u0440\\u0441 \\u043f\\u043e \\u0440\\u0430\\u0437\\u0440\\u0430\\u0431\\u043e\\u0442\\u043a\\u0435 iOS+Swift \\u043f\\u0440\\u0438\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0439.\",\"headline\":\"\\u0421\\u043e\\u0432\\u0440\\u0435\\u043c\\u0435\\u043d\\u043d\\u044b\\u0439 \\u043a\\u043e\\u0434 \\u0434\\u043b\\u044f \\u0432\\u044b\\u043f\\u043e\\u043b\\u043d\\u0435\\u043d\\u0438\\u044f HTTP \\u0437\\u0430\\u043f\\u0440\\u043e\\u0441\\u043e\\u0432 \\u0432 Swift 5 \\u0441 \\u043f\\u043e\\u043c\\u043e\\u0449\\u044c\\u044e Combine \\u0438 \\u043f\\u0440\\u0438\\u043c\\u0435\\u043d\\u0435\\u043d\\u0438\\u0435 \\u0438\\u0445 \\u0432 SwiftUI. \\u0427\\u0430\\u0441\\u0442\\u044c 2. \\u041d\\u043e\\u0432\\u043e\\u0441\\u0442\\u0438 NewsAPI.org.\",\"author\":{\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/author\\\/tatiana-lornilovagmail-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/Screenshot-2020-02-29-at-15.29.11.png\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\\\/#articleImage\",\"width\":1400,\"height\":1396},\"datePublished\":\"2020-02-05T19:18:10+00:00\",\"dateModified\":\"2020-03-10T08:39:33+00:00\",\"inLanguage\":\"ru-RU\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\\\/#webpage\"},\"articleSection\":\"Combine, iOS 13, SwiftUI\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/category\\\/swiftui\\\/#listItem\",\"name\":\"SwiftUI\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/category\\\/swiftui\\\/#listItem\",\"position\":2,\"name\":\"SwiftUI\",\"item\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/category\\\/swiftui\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\\\/#listItem\",\"name\":\"\\u0421\\u043e\\u0432\\u0440\\u0435\\u043c\\u0435\\u043d\\u043d\\u044b\\u0439 \\u043a\\u043e\\u0434 \\u0434\\u043b\\u044f \\u0432\\u044b\\u043f\\u043e\\u043b\\u043d\\u0435\\u043d\\u0438\\u044f HTTP \\u0437\\u0430\\u043f\\u0440\\u043e\\u0441\\u043e\\u0432 \\u0432 Swift 5 \\u0441 \\u043f\\u043e\\u043c\\u043e\\u0449\\u044c\\u044e Combine \\u0438 \\u043f\\u0440\\u0438\\u043c\\u0435\\u043d\\u0435\\u043d\\u0438\\u0435 \\u0438\\u0445 \\u0432 SwiftUI. \\u0427\\u0430\\u0441\\u0442\\u044c 2. \\u041d\\u043e\\u0432\\u043e\\u0441\\u0442\\u0438 NewsAPI.org.\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\\\/#listItem\",\"position\":3,\"name\":\"\\u0421\\u043e\\u0432\\u0440\\u0435\\u043c\\u0435\\u043d\\u043d\\u044b\\u0439 \\u043a\\u043e\\u0434 \\u0434\\u043b\\u044f \\u0432\\u044b\\u043f\\u043e\\u043b\\u043d\\u0435\\u043d\\u0438\\u044f HTTP \\u0437\\u0430\\u043f\\u0440\\u043e\\u0441\\u043e\\u0432 \\u0432 Swift 5 \\u0441 \\u043f\\u043e\\u043c\\u043e\\u0449\\u044c\\u044e Combine \\u0438 \\u043f\\u0440\\u0438\\u043c\\u0435\\u043d\\u0435\\u043d\\u0438\\u0435 \\u0438\\u0445 \\u0432 SwiftUI. \\u0427\\u0430\\u0441\\u0442\\u044c 2. \\u041d\\u043e\\u0432\\u043e\\u0441\\u0442\\u0438 NewsAPI.org.\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/category\\\/swiftui\\\/#listItem\",\"name\":\"SwiftUI\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/#person\",\"name\":\"tatiana.kornilova@gmail.com\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/33ccc19059014d8a7849c3621afa2b66a5f3e50ac7291c91c30ff35df5747628?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"tatiana.kornilova@gmail.com\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/author\\\/tatiana-lornilovagmail-com\\\/#author\",\"url\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/author\\\/tatiana-lornilovagmail-com\\\/\",\"name\":\"tatiana.kornilova@gmail.com\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/33ccc19059014d8a7849c3621afa2b66a5f3e50ac7291c91c30ff35df5747628?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"tatiana.kornilova@gmail.com\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\\\/#webpage\",\"url\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\\\/\",\"name\":\"\\u0421\\u043e\\u0432\\u0440\\u0435\\u043c\\u0435\\u043d\\u043d\\u044b\\u0439 \\u043a\\u043e\\u0434 \\u0434\\u043b\\u044f \\u0432\\u044b\\u043f\\u043e\\u043b\\u043d\\u0435\\u043d\\u0438\\u044f HTTP \\u0437\\u0430\\u043f\\u0440\\u043e\\u0441\\u043e\\u0432 \\u0432 Swift 5 \\u0441 \\u043f\\u043e\\u043c\\u043e\\u0449\\u044c\\u044e URLSession, Combine \\u0438 Codable. \\u0427\\u0430\\u0441\\u0442\\u044c 2. | \\u041e\\u0431\\u0443\\u0447\\u0430\\u044e\\u0449\\u0438\\u0439 \\u043a\\u0443\\u0440\\u0441 \\u043f\\u043e \\u0440\\u0430\\u0437\\u0440\\u0430\\u0431\\u043e\\u0442\\u043a\\u0435 iOS+Swift \\u043f\\u0440\\u0438\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0439.\",\"description\":\"\\u041d\\u0430 \\u043f\\u0440\\u0438\\u043c\\u0435\\u0440\\u0435 \\u0430\\u0433\\u0440\\u0435\\u0433\\u0430\\u0442\\u043e\\u0440\\u0430 \\u043d\\u043e\\u0432\\u043e\\u0441\\u0442\\u0435\\u0439 NewsAPI.org \\u043f\\u0440\\u0435\\u0434\\u0441\\u0442\\u0430\\u0432\\u043b\\u0435\\u043d\\u0430 \\u0441\\u0442\\u0440\\u0430\\u0442\\u0435\\u0433\\u0438\\u044f \\u043f\\u0440\\u0438\\u043c\\u0435\\u043d\\u0435\\u043d\\u0438\\u044f Combine \\u0434\\u043b\\u044f \\u0444\\u043e\\u0440\\u043c\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u0438\\u044f HTTP \\u0437\\u0430\\u043f\\u0440\\u043e\\u0441\\u043e\\u0432 \\u0438 \\u0438\\u0441\\u043f\\u043e\\u043b\\u044c\\u0437\\u043e\\u0432\\u0430\\u043d\\u0438\\u044f \\u0438\\u0445 \\u0432\\u043e View Model \\u0434\\u043b\\u044f \\u0443\\u043f\\u0440\\u0430\\u0432\\u043b\\u0435\\u043d\\u0438\\u044f UI, \\u0441\\u043f\\u0440\\u043e\\u0435\\u043a\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u043d\\u043e\\u0433\\u043e \\u0441 \\u043f\\u043e\\u043c\\u043e\\u0449\\u044c\\u044e SwiftUI.\",\"inLanguage\":\"ru-RU\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/author\\\/tatiana-lornilovagmail-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/author\\\/tatiana-lornilovagmail-com\\\/#author\"},\"datePublished\":\"2020-02-05T19:18:10+00:00\",\"dateModified\":\"2020-03-10T08:39:33+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/#website\",\"url\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/\",\"name\":\"\\u041e\\u0431\\u0443\\u0447\\u0430\\u044e\\u0449\\u0438\\u0439 \\u043a\\u0443\\u0440\\u0441 \\u043f\\u043e \\u0440\\u0430\\u0437\\u0440\\u0430\\u0431\\u043e\\u0442\\u043a\\u0435 iOS+Swift \\u043f\\u0440\\u0438\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0439.\",\"description\":\"\\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439 \\u043d\\u0435\\u0430\\u0432\\u0442\\u043e\\u0440\\u0438\\u0437\\u043e\\u0432\\u0430\\u043d\\u043d\\u044b\\u0439 \\u043a\\u043e\\u043d\\u0441\\u043f\\u0435\\u043a\\u0442 \\u043b\\u0435\\u043a\\u0446\\u0438\\u0439 \\u0421\\u0442\\u044d\\u043d\\u0444\\u043e\\u0440\\u0434\\u0441\\u043a\\u043e\\u0433\\u043e \\u0443\\u043d\\u0438\\u0432\\u0435\\u0440\\u0441\\u0438\\u0442\\u0435\\u0442\\u0430 \\\" \\u0420\\u0430\\u0437\\u0440\\u0430\\u0431\\u043e\\u0442\\u043a\\u0430 iOS \\u043f\\u0440\\u0438\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0439\\\" 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 , 2023,  2024,  2025  \\u0438 2026 \\u0433\\u0433., \\u0441\\u043e\\u043f\\u0440\\u043e\\u0432\\u043e\\u0436\\u0434\\u0430\\u0435\\u043c\\u044b\\u0439 \\u0440\\u0435\\u0448\\u0435\\u043d\\u0438\\u044f\\u043c\\u0438 \\u0437\\u0430\\u0434\\u0430\\u043d\\u0438\\u0439 \\u0438 \\u0434\\u043e\\u043f\\u043e\\u043b\\u043d\\u0435\\u043d\\u0438\\u044f\\u043c\\u0438, \\u0441\\u0432\\u044f\\u0437\\u0430\\u043d\\u043d\\u044b\\u043c\\u0438 \\u0441 \\u0430\\u0434\\u0430\\u043f\\u0442\\u0430\\u0446\\u0438\\u0435\\u0439 \\u043a\\u0443\\u0440\\u0441\\u043e\\u0432 \\u043a \\u043d\\u043e\\u0432\\u044b\\u043c \\u0432\\u0435\\u0440\\u0441\\u0438\\u044f\\u043c Swift, Objective-C \\u0438 iOS.\",\"inLanguage\":\"ru-RU\",\"publisher\":{\"@id\":\"https:\\\/\\\/bestkora.com\\\/IosDeveloper\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e URLSession, Combine \u0438 Codable. \u0427\u0430\u0441\u0442\u044c 2. | \u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 iOS+Swift \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.","description":"\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 NewsAPI.org \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f Combine \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0445 \u0432\u043e View Model \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f UI, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SwiftUI. ","canonical_url":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"combine,apple,publisher,subscriber,swift 5,http request,cancellable,anycancellable,receivecompletion,receivevalue,future,promise,datataskpublisher,assing(to:,on:),sink,swiftui,observableobject,view model,erasetoanypublisher,objectwillchange,identifiable,@observedobject,\u00a0tmdb","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/#article","name":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e URLSession, Combine \u0438 Codable. \u0427\u0430\u0441\u0442\u044c 2. | \u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 iOS+Swift \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.","headline":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Combine \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u0445 \u0432 SwiftUI. \u0427\u0430\u0441\u0442\u044c 2. \u041d\u043e\u0432\u043e\u0441\u0442\u0438 NewsAPI.org.","author":{"@id":"https:\/\/bestkora.com\/IosDeveloper\/author\/tatiana-lornilovagmail-com\/#author"},"publisher":{"@id":"https:\/\/bestkora.com\/IosDeveloper\/#person"},"image":{"@type":"ImageObject","url":"https:\/\/bestkora.com\/IosDeveloper\/wp-content\/uploads\/2020\/02\/Screenshot-2020-02-29-at-15.29.11.png","@id":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/#articleImage","width":1400,"height":1396},"datePublished":"2020-02-05T19:18:10+00:00","dateModified":"2020-03-10T08:39:33+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/#webpage"},"isPartOf":{"@id":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/#webpage"},"articleSection":"Combine, iOS 13, SwiftUI"},{"@type":"BreadcrumbList","@id":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/bestkora.com\/IosDeveloper#listItem","position":1,"name":"Home","item":"https:\/\/bestkora.com\/IosDeveloper","nextItem":{"@type":"ListItem","@id":"https:\/\/bestkora.com\/IosDeveloper\/category\/swiftui\/#listItem","name":"SwiftUI"}},{"@type":"ListItem","@id":"https:\/\/bestkora.com\/IosDeveloper\/category\/swiftui\/#listItem","position":2,"name":"SwiftUI","item":"https:\/\/bestkora.com\/IosDeveloper\/category\/swiftui\/","nextItem":{"@type":"ListItem","@id":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/#listItem","name":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Combine \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u0445 \u0432 SwiftUI. \u0427\u0430\u0441\u0442\u044c 2. \u041d\u043e\u0432\u043e\u0441\u0442\u0438 NewsAPI.org."},"previousItem":{"@type":"ListItem","@id":"https:\/\/bestkora.com\/IosDeveloper#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/#listItem","position":3,"name":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Combine \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u0445 \u0432 SwiftUI. \u0427\u0430\u0441\u0442\u044c 2. \u041d\u043e\u0432\u043e\u0441\u0442\u0438 NewsAPI.org.","previousItem":{"@type":"ListItem","@id":"https:\/\/bestkora.com\/IosDeveloper\/category\/swiftui\/#listItem","name":"SwiftUI"}}]},{"@type":"Person","@id":"https:\/\/bestkora.com\/IosDeveloper\/#person","name":"tatiana.kornilova@gmail.com","image":{"@type":"ImageObject","@id":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/33ccc19059014d8a7849c3621afa2b66a5f3e50ac7291c91c30ff35df5747628?s=96&d=mm&r=g","width":96,"height":96,"caption":"tatiana.kornilova@gmail.com"}},{"@type":"Person","@id":"https:\/\/bestkora.com\/IosDeveloper\/author\/tatiana-lornilovagmail-com\/#author","url":"https:\/\/bestkora.com\/IosDeveloper\/author\/tatiana-lornilovagmail-com\/","name":"tatiana.kornilova@gmail.com","image":{"@type":"ImageObject","@id":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/33ccc19059014d8a7849c3621afa2b66a5f3e50ac7291c91c30ff35df5747628?s=96&d=mm&r=g","width":96,"height":96,"caption":"tatiana.kornilova@gmail.com"}},{"@type":"WebPage","@id":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/#webpage","url":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/","name":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e URLSession, Combine \u0438 Codable. \u0427\u0430\u0441\u0442\u044c 2. | \u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 iOS+Swift \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.","description":"\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 NewsAPI.org \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f Combine \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0445 \u0432\u043e View Model \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f UI, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SwiftUI.","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/bestkora.com\/IosDeveloper\/#website"},"breadcrumb":{"@id":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/#breadcrumblist"},"author":{"@id":"https:\/\/bestkora.com\/IosDeveloper\/author\/tatiana-lornilovagmail-com\/#author"},"creator":{"@id":"https:\/\/bestkora.com\/IosDeveloper\/author\/tatiana-lornilovagmail-com\/#author"},"datePublished":"2020-02-05T19:18:10+00:00","dateModified":"2020-03-10T08:39:33+00:00"},{"@type":"WebSite","@id":"https:\/\/bestkora.com\/IosDeveloper\/#website","url":"https:\/\/bestkora.com\/IosDeveloper\/","name":"\u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 iOS+Swift \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.","description":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439 \u043d\u0435\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442 \u043b\u0435\u043a\u0446\u0438\u0439 \u0421\u0442\u044d\u043d\u0444\u043e\u0440\u0434\u0441\u043a\u043e\u0433\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0430 \" \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439\" 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 , 2023,  2024,  2025  \u0438 2026 \u0433\u0433., \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043c\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0435\u0439 \u043a\u0443\u0440\u0441\u043e\u0432 \u043a \u043d\u043e\u0432\u044b\u043c \u0432\u0435\u0440\u0441\u0438\u044f\u043c Swift, Objective-C \u0438 iOS.","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/bestkora.com\/IosDeveloper\/#person"}}]},"og:locale":"ru_RU","og:site_name":"\u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 iOS+Swift \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. | \u0420\u0443\u0441\u0441\u043a\u0438\u0439 \u043d\u0435\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442 \u043b\u0435\u043a\u0446\u0438\u0439 \u0421\u0442\u044d\u043d\u0444\u043e\u0440\u0434\u0441\u043a\u043e\u0433\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0430 &quot; \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439&quot; 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 , 2023,  2024,  2025  \u0438 2026 \u0433\u0433., \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043c\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0435\u0439 \u043a\u0443\u0440\u0441\u043e\u0432 \u043a \u043d\u043e\u0432\u044b\u043c \u0432\u0435\u0440\u0441\u0438\u044f\u043c Swift, Objective-C \u0438 iOS.","og:type":"article","og:title":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e URLSession, Combine \u0438 Codable. \u0427\u0430\u0441\u0442\u044c 2. | \u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 iOS+Swift \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.","og:description":"\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 NewsAPI.org \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f Combine \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0445 \u0432\u043e View Model \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f UI, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SwiftUI. ","og:url":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/","article:published_time":"2020-02-05T19:18:10+00:00","article:modified_time":"2020-03-10T08:39:33+00:00","twitter:card":"summary","twitter:title":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e URLSession, Combine \u0438 Codable. \u0427\u0430\u0441\u0442\u044c 2. | \u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 iOS+Swift \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.","twitter:description":"\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 NewsAPI.org \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f Combine \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0445 \u0432\u043e View Model \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f UI, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SwiftUI. "},"aioseo_meta_data":{"post_id":"11740","title":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e URLSession, Combine \u0438 Codable. \u0427\u0430\u0441\u0442\u044c 2. | #site_title","description":"\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439\u00a0NewsAPI.org \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u00a0Combine \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432\u00a0\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0445 \u0432\u043e\u00a0View Model\u00a0\u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f UI, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0SwiftUI.\u00a0","keywords":[{"label":"Combine","value":"Combine"},{"label":"Apple","value":"Apple"},{"label":"Publisher","value":"Publisher"},{"label":"Subscriber","value":"Subscriber"},{"label":"Swift 5","value":"Swift 5"},{"label":"HTTP request","value":"HTTP request"},{"label":"Cancellable","value":"Cancellable"},{"label":"AnyCancellable","value":"AnyCancellable"},{"label":"receiveCompletion","value":"receiveCompletion"},{"label":"receiveValue","value":"receiveValue"},{"label":"Future","value":"Future"},{"label":"Promise","value":"Promise"},{"label":"dataTaskPublisher","value":"dataTaskPublisher"},{"label":"assing(to:","value":"assing(to:"},{"label":"on:)","value":"on:)"},{"label":"sink","value":"sink"},{"label":"SwiftUI","value":"SwiftUI"},{"label":"ObservableObject","value":"ObservableObject"},{"label":"View Model","value":"View Model"},{"label":"eraseToAnyPublisher","value":"eraseToAnyPublisher"},{"label":"objectWillChange","value":"objectWillChange"},{"label":"Identifiable","value":"Identifiable"},{"label":"View Model","value":"View Model"},{"label":"@ObservedObject","value":"@ObservedObject"},{"label":"\u00a0TMDb","value":"\u00a0TMDb"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 06:31:40","updated":"2026-02-22 20:04:43","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/bestkora.com\/IosDeveloper\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/bestkora.com\/IosDeveloper\/category\/swiftui\/\" title=\"SwiftUI\">SwiftUI<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Combine \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u0445 \u0432 SwiftUI. \u0427\u0430\u0441\u0442\u044c 2. \u041d\u043e\u0432\u043e\u0441\u0442\u0438 NewsAPI.org.\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/bestkora.com\/IosDeveloper"},{"label":"SwiftUI","link":"https:\/\/bestkora.com\/IosDeveloper\/category\/swiftui\/"},{"label":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Swift 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Combine \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u0445 \u0432 SwiftUI. \u0427\u0430\u0441\u0442\u044c 2. \u041d\u043e\u0432\u043e\u0441\u0442\u0438 NewsAPI.org.","link":"https:\/\/bestkora.com\/IosDeveloper\/sovremennyj-kod-dlya-vypolneniya-http-zaprosov-v-swift-5-s-pomoshhyu-urlsession-combine-i-codable-chast-2\/"}],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/bestkora.com\/IosDeveloper\/wp-json\/wp\/v2\/posts\/11740","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bestkora.com\/IosDeveloper\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bestkora.com\/IosDeveloper\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bestkora.com\/IosDeveloper\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bestkora.com\/IosDeveloper\/wp-json\/wp\/v2\/comments?post=11740"}],"version-history":[{"count":5,"href":"https:\/\/bestkora.com\/IosDeveloper\/wp-json\/wp\/v2\/posts\/11740\/revisions"}],"predecessor-version":[{"id":12193,"href":"https:\/\/bestkora.com\/IosDeveloper\/wp-json\/wp\/v2\/posts\/11740\/revisions\/12193"}],"wp:attachment":[{"href":"https:\/\/bestkora.com\/IosDeveloper\/wp-json\/wp\/v2\/media?parent=11740"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bestkora.com\/IosDeveloper\/wp-json\/wp\/v2\/categories?post=11740"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bestkora.com\/IosDeveloper\/wp-json\/wp\/v2\/tags?post=11740"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}