{"id":524,"date":"2018-02-16T02:18:22","date_gmt":"2018-02-16T02:18:22","guid":{"rendered":"http:\/\/winklix.com\/blog\/?p=524"},"modified":"2018-02-16T02:18:22","modified_gmt":"2018-02-16T02:18:22","slug":"conquering-reactiveswift-primitives","status":"publish","type":"post","link":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/","title":{"rendered":"CONQUERING REACTIVESWIFT: PRIMITIVES"},"content":{"rendered":"<p class=\"separator\">\n<p>Winklix is an <a href=\"https:\/\/www.winklix.com\/mobile-app-development\" target=\"_blank\" rel=\"noopener\">app development company<\/a> that does most of their <a href=\"https:\/\/www.winklix.com\/iphone-app-developer\" target=\"_blank\" rel=\"noopener\">iOS development<\/a> using Reactive Swift. There are two approaches of solving a problem in swift. First one is the imperative way and second one is the functional reactive way. Reactive Swift is taking leaps and bounds in today\u2019s world. It is getting more and more prevalent with each passing day. Let us try to understand what is all the fuzz about?<\/p>\n<h3><b>\u00a0<\/b><\/h3>\n<h3><b>Basic building blocks of Reactive Swift<\/b><\/h3>\n<p>One of the best ways to manage the complexity of user interface is through reactive programming. Reactive Swift creators were focused to creating a language which is declarative, composable and flexible. The paramount feature of the<a href=\"http:\/\/winklix.com\/blog\/choose-objective-c-vs-swift\/\" target=\"_blank\" rel=\"noopener\"> Reactive Swift<\/a> is that it is an amalgamation of streams, transformation and bindings. Streams are a very familiar data structure through which you can send anything. It is decisive to listen for the stuff, otherwise you may miss it. Using the transformation, you can basically map one type of array into another type of required array. Binding is a third ingredient of Reactive Swift. Through bindings, you can bind the stuffs to things.<\/p>\n<p>Reactive Swift has a very basic building block structure given below which will assist you to write code in functional reactive way. These key building blocks are categorized in the following way.<\/p>\n<p><img decoding=\"async\" src=\"blob:https:\/\/www.blogger.com\/6cd9510c-03be-4859-b6c9-c5cfd6f111b9\" \/><\/p>\n<h3><b>Source<\/b><\/h3>\n<p>Our main focus is on the rapid changes over time rather than a particular state in time. These all primitive blocks are categorized under the Source category in reactive programming. Source comprises of Event, Signal, Signal Producer and Action. These key building blocks are accountable for the proliferation and occurrence of the changes in time.<\/p>\n<ol>\n<li><b><\/b><b>Event<\/b><\/li>\n<\/ol>\n<p>An Event is the occurrence of something. Events are the centrepiece of communication. An Event might be occurrence of an error, press of a button or receive of any information from an API. Events are of following four types<\/p>\n<ul>\n<li><b>Value: <\/b>This event offers a value from the source.<\/li>\n<li><b>Failed: <\/b>This event means that an error has occurred before the completion of a signal.<\/li>\n<li><b>Completed: <\/b>This event means that the signal has completed successfully and no more signals will be sent from the source<b>.<\/b><\/li>\n<li><b>Interrupted: <\/b>This event means that the signal has been interrupted because of the cancellation. This means that the operation was neither successful nor unsuccessful.<\/li>\n<\/ul>\n<ol start=\"2\">\n<li><b><\/b><b>Signal<\/b><\/li>\n<\/ol>\n<p>Signals represent event streams that are in progress like user input, notifications etc. When the user gets the data, events are sent through signals. This is pushed out to all the observers due to which all observers can view the events at same time.<\/p>\n<ol start=\"3\">\n<li><b><\/b><b>Signal Producer<\/b><\/li>\n<\/ol>\n<p>Signal Producer creates signals and represents tasks and operations like network requests etc. Signal Produces is considered to be cold as it needs to be initiated while Signal is considered as warm because it does not need to be initiated.<\/p>\n<ol start=\"4\">\n<li><b><\/b><b>Action<\/b><\/li>\n<\/ol>\n<p>Actions are responsible for doing work when executed with an input like click of a button. It generates output values like zero while execution. Actions can also be disabled on property which will disable any controls associated with the action.<\/p>\n<ol start=\"5\">\n<li><b><\/b><b>Property<\/b><\/li>\n<\/ol>\n<p>Property is used to store a value. If there is any change in the value, it automatically notifies. The current value can be accessed from the value getter. The current value is send by the producer getter through signal producer.<\/p>\n<h3><b>Consumer<\/b><\/h3>\n<p>The basic blocks in this category listens and perform according to the events generated and sent by source primitives. Consumer category has two sub-categories.<\/p>\n<ol>\n<li><b><\/b><b>Observer<\/b><\/li>\n<\/ol>\n<p>It captures the work that needs to be performed in reply of the emitted events from the source. An observer takes event as an input.<\/p>\n<ol start=\"2\">\n<li><b><\/b><b>Mutable Property<\/b><\/li>\n<\/ol>\n<p>Just like Property, it is also used to store the value. But it is different from the property as it can be muted directly. It has the ability to update its value according to the values received by signal.<\/p>\n<h3><b>Operators<\/b><\/h3>\n<div><b>\u00a0<\/b><\/div>\n<p>Operators are the functions that transform signal and signal producer. These are composable primitives that work with event streams. These operators can be used for transformation, performing side-effects, flatten, combine etc.<\/p>\n<p><b>Scope<\/b><\/p>\n<p>These primitives are used for determining the interaction time between the consumer and source. It has the following two sub categories<\/p>\n<ol>\n<li><b><\/b><b>Disposable\u00a0<\/b><\/li>\n<\/ol>\n<p>Disposable enables the user to manage the memory and cancellation of signal. When we start the signal Producer, we get a disposable which can be used to cancel the started work.<\/p>\n<ol start=\"2\">\n<li><b><\/b><b>Lifetime<\/b><\/li>\n<\/ol>\n<p>It determines the longevity of an object like we want to observe a notification till the UI component is on the screen. <b>\u00a0<\/b><\/p>\n<h3><b>The Flow<\/b><\/h3>\n<p>The complete flow of how the primitives complete the job is explained below<\/p>\n<p><b>Step 1: Defining a Signal<\/b><\/p>\n<p>let signal: Signal&lt;String?, NoError&gt;<\/p>\n<p><b>Step 2: Transforming a Signal<\/b><\/p>\n<p>As we can see that in the first step, we get an optional string. Then we need to transform the nil string to empty string and transform it one more time to give Boolean values. We have used skipNil to ignore nil strings here<\/p>\n<p>let transformedSignal = signal<\/p>\n<p>.map { text in<\/p>\n<p>text ?? &#8220;&#8221; <b>\u00a0<\/b><\/p>\n<p>}.map { text in<\/p>\n<p>text.characters.count &gt; 10<\/p>\n<p>}<\/p>\n<p><b>Step 3: Observing Signal<\/b><\/p>\n<p>We observed that the setting isEnabled on the screen. We will start observing the transformed signal via observe primitive.<\/p>\n<p>let observer =<\/p>\n<p>Signal&lt;Bool, NoError&gt;.Observer(value: { value in<\/p>\n<p>button.isEnabled = value<\/p>\n<p>})<\/p>\n<p>let disposable = transformedSignal.observe(observer)<\/p>\n<p><b>Step 4: Stop observing a signal<\/b><\/p>\n<p>Observe primitive returns a instance which can be used to stop signal observing<\/p>\n<p>disposable.dispose()<\/p>\n<h3><b>Conclusion<\/b><\/h3>\n<p>This is how the different basic building blocks or primitives are used to write code in a functional reactive way. <a href=\"https:\/\/www.winklix.com\/\" target=\"_blank\" rel=\"noopener\">Winklix<\/a> is <a href=\"https:\/\/www.winklix.com\/iphone-app-developer\" target=\"_blank\" rel=\"noopener\">iPhone app development company<\/a> who create app that get&#8217;s featured in App Store . In case you are willing to have your app developed by us , you can <a href=\"https:\/\/www.winklix.com\/\" target=\"_blank\" rel=\"noopener\">contact us<\/a> .<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Winklix is an app development company that does most of their iOS development using Reactive Swift. There are two approaches of solving a problem in swift. First one is the imperative way and second one is the functional reactive way. Reactive Swift is taking leaps and bounds in today\u2019s world. It is getting more and &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;CONQUERING REACTIVESWIFT: PRIMITIVES&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":526,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[76,139,41,140,43,138,137],"class_list":["post-524","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-iphone-app-developer","tag-iphone-app-developer-in-bangalore","tag-iphone-app-developer-in-delhi","tag-iphone-app-developer-in-india","tag-iphone-app-developer-in-mumbai","tag-iphone-app-development-agency","tag-iphone-app-development-company"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CONQUERING REACTIVESWIFT: PRIMITIVES - The Winklix Insights Hub<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CONQUERING REACTIVESWIFT: PRIMITIVES - The Winklix Insights Hub\" \/>\n<meta property=\"og:description\" content=\"Winklix is an app development company that does most of their iOS development using Reactive Swift. There are two approaches of solving a problem in swift. First one is the imperative way and second one is the functional reactive way. Reactive Swift is taking leaps and bounds in today\u2019s world. It is getting more and &hellip; Continue reading &quot;CONQUERING REACTIVESWIFT: PRIMITIVES&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/\" \/>\n<meta property=\"og:site_name\" content=\"The Winklix Insights Hub\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Winklix\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-02-16T02:18:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.winklix.com\/blog\/wp-content\/uploads\/2018\/02\/DEV_React-Native-Hybrid-Mobile-Framework_M-940x400.png\" \/>\n\t<meta property=\"og:image:width\" content=\"940\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/#\\\/schema\\\/person\\\/8e4d9d1eaab8f196af487e5aa9573ad9\"},\"headline\":\"CONQUERING REACTIVESWIFT: PRIMITIVES\",\"datePublished\":\"2018-02-16T02:18:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/\"},\"wordCount\":959,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/DEV_React-Native-Hybrid-Mobile-Framework_M-940x400.png\",\"keywords\":[\"iPhone app developer\",\"iphone app developer in bangalore\",\"iphone app developer in delhi\",\"iphone app developer in india\",\"iphone app developer in mumbai\",\"iphone app development agency\",\"iphone app development company\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/\",\"url\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/\",\"name\":\"CONQUERING REACTIVESWIFT: PRIMITIVES - The Winklix Insights Hub\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/DEV_React-Native-Hybrid-Mobile-Framework_M-940x400.png\",\"datePublished\":\"2018-02-16T02:18:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/DEV_React-Native-Hybrid-Mobile-Framework_M-940x400.png\",\"contentUrl\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/DEV_React-Native-Hybrid-Mobile-Framework_M-940x400.png\",\"width\":940,\"height\":400,\"caption\":\"iPhone app developer\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/conquering-reactiveswift-primitives\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Uncategorized\",\"item\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/category\\\/uncategorized\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"CONQUERING REACTIVESWIFT: PRIMITIVES\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/\",\"name\":\"Winklix - Digitla Transformation Consultant\",\"description\":\"Expert perspectives on building smarter digital businesses\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/#organization\",\"name\":\"winklix\",\"url\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/03\\\/18011101_1913606148921801_758983040460375898_n.png\",\"contentUrl\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/03\\\/18011101_1913606148921801_758983040460375898_n.png\",\"width\":500,\"height\":500,\"caption\":\"winklix\"},\"image\":{\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Winklix\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/winklix\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/#\\\/schema\\\/person\\\/8e4d9d1eaab8f196af487e5aa9573ad9\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ffbcecbad365e7e2ca9fff83ab0af04c33e41092e285f59f46ac3ea9e6a7c6d0?s=96&d=color&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ffbcecbad365e7e2ca9fff83ab0af04c33e41092e285f59f46ac3ea9e6a7c6d0?s=96&d=color&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ffbcecbad365e7e2ca9fff83ab0af04c33e41092e285f59f46ac3ea9e6a7c6d0?s=96&d=color&r=g\",\"caption\":\"admin\"},\"description\":\"I am a freelancer blogger expert ready to write some classy content.\",\"sameAs\":[\"http:\\\/\\\/www.winklix.com\"],\"url\":\"https:\\\/\\\/www.winklix.com\\\/blog\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CONQUERING REACTIVESWIFT: PRIMITIVES - The Winklix Insights Hub","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/","og_locale":"en_US","og_type":"article","og_title":"CONQUERING REACTIVESWIFT: PRIMITIVES - The Winklix Insights Hub","og_description":"Winklix is an app development company that does most of their iOS development using Reactive Swift. There are two approaches of solving a problem in swift. First one is the imperative way and second one is the functional reactive way. Reactive Swift is taking leaps and bounds in today\u2019s world. It is getting more and &hellip; Continue reading \"CONQUERING REACTIVESWIFT: PRIMITIVES\"","og_url":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/","og_site_name":"The Winklix Insights Hub","article_publisher":"https:\/\/www.facebook.com\/Winklix\/","article_published_time":"2018-02-16T02:18:22+00:00","og_image":[{"width":940,"height":400,"url":"https:\/\/www.winklix.com\/blog\/wp-content\/uploads\/2018\/02\/DEV_React-Native-Hybrid-Mobile-Framework_M-940x400.png","type":"image\/png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/#article","isPartOf":{"@id":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/"},"author":{"name":"admin","@id":"https:\/\/www.winklix.com\/blog\/#\/schema\/person\/8e4d9d1eaab8f196af487e5aa9573ad9"},"headline":"CONQUERING REACTIVESWIFT: PRIMITIVES","datePublished":"2018-02-16T02:18:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/"},"wordCount":959,"commentCount":0,"publisher":{"@id":"https:\/\/www.winklix.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/#primaryimage"},"thumbnailUrl":"https:\/\/www.winklix.com\/blog\/wp-content\/uploads\/2018\/02\/DEV_React-Native-Hybrid-Mobile-Framework_M-940x400.png","keywords":["iPhone app developer","iphone app developer in bangalore","iphone app developer in delhi","iphone app developer in india","iphone app developer in mumbai","iphone app development agency","iphone app development company"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/","url":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/","name":"CONQUERING REACTIVESWIFT: PRIMITIVES - The Winklix Insights Hub","isPartOf":{"@id":"https:\/\/www.winklix.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/#primaryimage"},"image":{"@id":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/#primaryimage"},"thumbnailUrl":"https:\/\/www.winklix.com\/blog\/wp-content\/uploads\/2018\/02\/DEV_React-Native-Hybrid-Mobile-Framework_M-940x400.png","datePublished":"2018-02-16T02:18:22+00:00","breadcrumb":{"@id":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/#primaryimage","url":"https:\/\/www.winklix.com\/blog\/wp-content\/uploads\/2018\/02\/DEV_React-Native-Hybrid-Mobile-Framework_M-940x400.png","contentUrl":"https:\/\/www.winklix.com\/blog\/wp-content\/uploads\/2018\/02\/DEV_React-Native-Hybrid-Mobile-Framework_M-940x400.png","width":940,"height":400,"caption":"iPhone app developer"},{"@type":"BreadcrumbList","@id":"https:\/\/www.winklix.com\/blog\/conquering-reactiveswift-primitives\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.winklix.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Uncategorized","item":"https:\/\/www.winklix.com\/blog\/category\/uncategorized\/"},{"@type":"ListItem","position":3,"name":"CONQUERING REACTIVESWIFT: PRIMITIVES"}]},{"@type":"WebSite","@id":"https:\/\/www.winklix.com\/blog\/#website","url":"https:\/\/www.winklix.com\/blog\/","name":"Winklix - Digitla Transformation Consultant","description":"Expert perspectives on building smarter digital businesses","publisher":{"@id":"https:\/\/www.winklix.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.winklix.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.winklix.com\/blog\/#organization","name":"winklix","url":"https:\/\/www.winklix.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.winklix.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.winklix.com\/blog\/wp-content\/uploads\/2018\/03\/18011101_1913606148921801_758983040460375898_n.png","contentUrl":"https:\/\/www.winklix.com\/blog\/wp-content\/uploads\/2018\/03\/18011101_1913606148921801_758983040460375898_n.png","width":500,"height":500,"caption":"winklix"},"image":{"@id":"https:\/\/www.winklix.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Winklix\/","https:\/\/www.linkedin.com\/company\/winklix"]},{"@type":"Person","@id":"https:\/\/www.winklix.com\/blog\/#\/schema\/person\/8e4d9d1eaab8f196af487e5aa9573ad9","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ffbcecbad365e7e2ca9fff83ab0af04c33e41092e285f59f46ac3ea9e6a7c6d0?s=96&d=color&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ffbcecbad365e7e2ca9fff83ab0af04c33e41092e285f59f46ac3ea9e6a7c6d0?s=96&d=color&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ffbcecbad365e7e2ca9fff83ab0af04c33e41092e285f59f46ac3ea9e6a7c6d0?s=96&d=color&r=g","caption":"admin"},"description":"I am a freelancer blogger expert ready to write some classy content.","sameAs":["http:\/\/www.winklix.com"],"url":"https:\/\/www.winklix.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.winklix.com\/blog\/wp-json\/wp\/v2\/posts\/524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.winklix.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.winklix.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.winklix.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.winklix.com\/blog\/wp-json\/wp\/v2\/comments?post=524"}],"version-history":[{"count":1,"href":"https:\/\/www.winklix.com\/blog\/wp-json\/wp\/v2\/posts\/524\/revisions"}],"predecessor-version":[{"id":527,"href":"https:\/\/www.winklix.com\/blog\/wp-json\/wp\/v2\/posts\/524\/revisions\/527"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.winklix.com\/blog\/wp-json\/wp\/v2\/media\/526"}],"wp:attachment":[{"href":"https:\/\/www.winklix.com\/blog\/wp-json\/wp\/v2\/media?parent=524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.winklix.com\/blog\/wp-json\/wp\/v2\/categories?post=524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.winklix.com\/blog\/wp-json\/wp\/v2\/tags?post=524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}