{"id":938,"date":"2017-07-25T14:43:33","date_gmt":"2017-07-25T12:43:33","guid":{"rendered":"https:\/\/zaven.co\/blog\/?p=938"},"modified":"2025-04-08T19:55:08","modified_gmt":"2025-04-08T17:55:08","slug":"3d-touch-peek-pop-tutorial","status":"publish","type":"post","link":"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/","title":{"rendered":"3D Touch Peek and Pop Tutorial"},"content":{"rendered":"<p>With the release of the new model of phones: the iPhone 6s, Apple introduced 3D Touch. It&#8217;s a functionality that allows the user to interact with the device using pressure. In the &#8220;3D Touch Peek and Pop Tutorial&#8221;, I will show you how to use the Peek and Pop feature in iOS app development.<!--more--><\/p>\n<p>In our last article: <a href=\"https:\/\/zaven.co\/blog\/3d-touch-quick-actions-tutorial\/\" target=\"_blank\" rel=\"noopener noreferrer\">3D Touch Quick Actions Tutorial<\/a>, Szymon described Quick Actions. <b>Here you will learn how to implement the <\/b><strong>Peek and Pop<\/strong> <b>feature<\/b>, which can be found in applications like Mail as well as the App Store. This is a must read if you are an iOS app developer!<\/p>\n<h2>Getting started with Peek and Pop using 3D Touch<\/h2>\n<p>In the first part of the tutorial, you will create <code>UIViewController<\/code>&#8216;s which you will later use to implement the <em>Peek and Pop functionality<\/em>. To create the application UI, use Storyboard.<\/p>\n<p>The first obstacle will be to create two views and to combine the view components with ViewControllers using <code>@IBOutlets<\/code>.<br \/>\n<a href=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/obraz-1-dwa-widoki.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-939 size-full\" src=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/obraz-1-dwa-widoki.png\" alt=\"3D Touch Peek and Pop \"   srcset=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/obraz-1-dwa-widoki.png 919w, https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/obraz-1-dwa-widoki-730x424.png 730w\" sizes=\"auto, (max-width: 919px) 100vw, 919px\" \/><\/a><\/p>\n<p>For the next step create<code>struct<\/code> which will represent the object <code>Restaurant<\/code>:<\/p>\n<pre><code class=\"language-swift\">\nstruct Restaurant {\n    var name: String\n    var photo: UIImage\n    var description: String\n    var address: String\n    \n}\n\n<\/code><\/pre>\n<p>In the first <code>UIViewController<\/code> you create a table of objects of the type <code>Restaurant<\/code>, which will later be presented by <code>UITableView<\/code>:<\/p>\n<pre><code class=\"language-swift\">\n         fileprivate var restaurants: [Restaurant] = {\n        return [\n            Restaurant(name: \"Marina\", photo: #imageLiteral(resourceName: \"marina_restaurant\"), description: Decriptions.Marina.rawValue, address: Addresses.Marina.rawValue),\n            Restaurant(name: \"Monopol\", photo:  #imageLiteral(resourceName: \"monopol_restaurant\"), description: Decriptions.Monopol.rawValue, address: Addresses.Monopol.rawValue),\n            Restaurant(name: \"Campo\", photo:#imageLiteral(resourceName: \"campo_restaurant\"), description: Decriptions.Campo.rawValue, address: Addresses.Campo.rawValue),\n            ]\n    }()\n<\/code><\/pre>\n<p>To display the objects in the Restaurants table, the next step is to implement the: <code>UITableViewDelegate<\/code>, <code>UITableViewDataSource<\/code> in the first <code>UIViewController<\/code>.<\/p>\n<pre><code class=\"language-swift\">\n     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {\n        return restaurants.count\n    }\n\n    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; UITableViewCell {\n        let cell = self.restaurantTableView.dequeueReusableCell(withIdentifier: RestaurantCell.identifier) as! RestaurantCell\n        cell.configureCellView(withRestaurant: restaurants[indexPath.row])\n        return cell\n    }  \n<\/code><\/pre>\n<p>Then you get <code>UIViewController<\/code> as delegate and data source for <code>TableView<\/code>:<\/p>\n<pre><code class=\"language-swift\">\n       restaurantTableView.delegate = self\n       restaurantTableView.dataSource = self \n<\/code><\/pre>\n<p><strong>Now your iOS application should look as follows:<\/strong><\/p>\n<p><a href=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/obraz-2-wygladd-apki-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-945\" src=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/obraz-2-wygladd-apki-1-730x1298.png\" alt=\"3D Touch Peek and Pop \"   srcset=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/obraz-2-wygladd-apki-1-730x1298.png 730w, https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/obraz-2-wygladd-apki-1.png 750w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/a><\/p>\n<h2>How to implement 3D Touch Peek and Pop in Swift<\/h2>\n<p>After performing the previous steps you are ready to implement the <strong>Peek and Pop<\/strong> functionality in your iPhone app.<\/p>\n<p>In this part of the tutorial you first need to extend the <code>UIViewController<\/code> to the <code>UIViewControllerPreviewingDelegate<\/code> protocol. This contains methods that will allow:<br \/>\n\u2022 a preview of the <code>UIViewController<\/code> containing detailed information about the object in the list<br \/>\n\u2022 access to an object in the list by pressing the button more firmly<\/p>\n<p>Important: Before implementing the <code>UIViewControllerPreviewingDelegate<\/code> processes, <strong>check if your device supports 3D Touch functionality<\/strong>!<\/p>\n<pre><code class=\"language-swift\">\n       guard traitCollection.forceTouchCapability == .available else { return }\n       registerForPreviewing(with: self, sourceView: view) \n<\/code><\/pre>\n<p>If the device supports force touch, register the <code>UIViewController<\/code> to allow it to show a preview (peek) and move on to the next <code>UIViewController<\/code> (pop).<br \/>\nAfter checking for 3D Touch support, extend the <code>UIViewController<\/code> to the <code>UIViewControllerPreviewingDelegate<\/code>:<\/p>\n<pre><code class=\"language-swift\">\nextension RestaurantsViewController: UIViewControllerPreviewingDelegate {\n}\n<\/code><\/pre>\n<h2>Swift app development: method previewingContext<\/h2>\n<p>The first method you will implement is the method that is invoked when the user presses the source view (that is, the <code>UIView<\/code> managed by the <code>UIViewController<\/code> in which you currently find yourself).<\/p>\n<p>The steps to be taken under this method are:<\/p>\n<pre><code class=\"language-swift\">\nfunc previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -&gt; UIViewController? {\n\t\/\/1\n        guard let indexPath = restaurantTableView?.indexPathForRow(at: location) else { return nil }\n\t\/\/2\n        guard let cell = restaurantTableView?.cellForRow(at: indexPath) else { return nil }\n\n\t\/\/3\n    previewingContext.sourceRect = cell.frame\n\n\t\/\/4\n        guard let restuarantDetailsViewController = storyboard?.instantiateViewController(withIdentifier: RestaurantDetailsViewController.identifier) as? RestaurantDetailsViewController else { return nil }\n\t\/\/5\n        let restaurant = restaurants[indexPath.row]\n\n\t\/\/6\n        restuarantDetailsViewController.restaurant = restaurant\n\n\t\/\/7\n        restuarantDetailsViewController.preferredContentSize = CGSize(width: 0, height: 500)\n   \n\t\/\/8\n        return restuarantDetailsViewControlle\n }\n<\/code><\/pre>\n<p>Below is a description of the steps that need to be taken:<\/p>\n<p>1. Create <code>indexPath<\/code> based on the coordinates of the place where the user clicked on the view (the place is represented by the <code>CGPoint<\/code> object and passed in the argument of the method).<\/p>\n<p>2. Using a previously created <code>indexPath<\/code>, you can create a cell object presented by <code>UITableView<\/code>.<\/p>\n<p>3. Specify the area that will be exposed (the rest of the screen will be slightly fuzzy, in this case, it&#8217;s the area of the selected cell).<\/p>\n<p>4. Create a <code>UIViewControlller<\/code> that will display the details of the object presented in this view.<\/p>\n<p>5. Create an object for a particular restaurant based on the previously obtained <code>indexPath<\/code>.<\/p>\n<p>6. Pass the <code>Restaurant<\/code> object to the <code>UIViewController<\/code>, which will be able to view it after the view setup.<\/p>\n<p>7. Specify the dimensions of the <code>UIViewController<\/code> preview.<\/p>\n<p>8. Return the <code>UIViewController<\/code> objects that will be presented in the preview.<\/p>\n<p><strong>How did it go?<\/strong><\/p>\n<p>After you implement the <code>previewingContext<\/code> method, you should get the functionality outlined below:<\/p>\n<p><a href=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/obraz-3-MArina.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-949\" src=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/obraz-3-MArina-730x1298.png\" alt=\"3D Touch Peek and Pop\"   srcset=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/obraz-3-MArina-730x1298.png 730w, https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/obraz-3-MArina.png 750w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/a><\/p>\n<h2>Develop iPhone app: almost done!<\/h2>\n<p>The second method from the <code>UIViewControllerPreviewingDelegate<\/code>, allows you to move on to the next <code>UIViewController<\/code> when the user presses hardest on the button. It needs to be implemented! This will be a lot faster:<\/p>\n<pre><code class=\"language-swift\">\n    func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {\n\/\/ 1\n        show(viewControllerToCommit, sender: self)\n    }\n<\/code><\/pre>\n<p>1. You present the<code>UIViewController<\/code> which is passed in the parameter of the method.<\/p>\n<h2>That\u2019s it for the 3D Touch Peek and Pop Tutorial!<\/h2>\n<p><strong>As a summary:<\/strong> thanks to 3D Touch you can significantly improve the user experience of your iPhone application. Remember that the functionality must be turned on:<br \/>\nTouch in Settings &gt; General &gt; Accessibility &gt; 3D Touch<br \/>\nCheck out the other possibilities 3D Touch offers in the documentation found on the Apple website.<\/p>\n<hr>\n<h3>You can find the source code on my <a href=\"https:\/\/github.com\/piotrprzeliorz\/PeekAndPopTutorial\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">GitHub<\/a>.<\/h3>\n<hr>\n","protected":false},"excerpt":{"rendered":"<p>With the release of the new model of phones: the iPhone 6s, Apple introduced 3D Touch. It&#8217;s a functionality that allows the user to interact with the device using pressure. In the &#8220;3D Touch Peek and Pop Tutorial&#8221;, I will show you how to use the Peek and Pop feature in iOS app development.<\/p>\n","protected":false},"author":15,"featured_media":961,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57,5],"tags":[85,93,86,36,75,40,92],"class_list":["post-938","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ios-development","category-tutorials","tag-3d-touch","tag-3d-touch-peek-and-pop-tutorial","tag-ios","tag-ios-app-development","tag-ios-developer","tag-mobile-app","tag-peek-and-pop"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.8.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>3D Touch Peek and Pop Tutorial | Zaven Blog<\/title>\n<meta name=\"description\" content=\"In the &quot;3D Touch Peek and Pop Tutorial&quot;, I will show you how to use the Peek and Pop feature in iOS app development. Read it and find out more about it.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"3D Touch Peek and Pop Tutorial | Zaven Blog\" \/>\n<meta property=\"og:description\" content=\"In the &quot;3D Touch Peek and Pop Tutorial&quot;, I will show you how to use the Peek and Pop feature in iOS app development. Read it and find out more about it.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"Zaven Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-07-25T12:43:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-08T17:55:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/Depositphotos_87968442_original.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2808\" \/>\n\t<meta property=\"og:image:height\" content=\"1872\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Piotr Przeliorz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Piotr Przeliorz\" \/>\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\":\"WebPage\",\"@id\":\"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/\",\"url\":\"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/\",\"name\":\"3D Touch Peek and Pop Tutorial | Zaven Blog\",\"isPartOf\":{\"@id\":\"https:\/\/zaven.co\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/Depositphotos_87968442_original.jpg\",\"datePublished\":\"2017-07-25T12:43:33+00:00\",\"dateModified\":\"2025-04-08T17:55:08+00:00\",\"author\":{\"@id\":\"https:\/\/zaven.co\/blog\/#\/schema\/person\/239fdb404827a4f3e06c090f2d463722\"},\"description\":\"In the \\\"3D Touch Peek and Pop Tutorial\\\", I will show you how to use the Peek and Pop feature in iOS app development. Read it and find out more about it.\",\"breadcrumb\":{\"@id\":\"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/#primaryimage\",\"url\":\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/Depositphotos_87968442_original.jpg\",\"contentUrl\":\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/Depositphotos_87968442_original.jpg\",\"width\":2808,\"height\":1872,\"caption\":\"Peek and Pop Tutorial\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zaven.co\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"3D Touch Peek and Pop Tutorial\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/zaven.co\/blog\/#website\",\"url\":\"https:\/\/zaven.co\/blog\/\",\"name\":\"Zaven Blog\",\"description\":\"Software development blog. Generative AI, web &amp; mobile applications.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/zaven.co\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/zaven.co\/blog\/#\/schema\/person\/239fdb404827a4f3e06c090f2d463722\",\"name\":\"Piotr Przeliorz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zaven.co\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2c7baf93e58f6d190e3f7cf0859080c7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2c7baf93e58f6d190e3f7cf0859080c7?s=96&d=mm&r=g\",\"caption\":\"Piotr Przeliorz\"},\"description\":\"Regardless of complicated surname, Piotr believes in simple solutions. He loves to create, to modify, to make mistakes in iOS apps and to correct them. And, last but not least, to have fun with every single line of new code.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/piotr-przeliorz-a01a9611a\"],\"url\":\"https:\/\/zaven.co\/blog\/author\/piotr-przeliorz\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"3D Touch Peek and Pop Tutorial | Zaven Blog","description":"In the \"3D Touch Peek and Pop Tutorial\", I will show you how to use the Peek and Pop feature in iOS app development. Read it and find out more about it.","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:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/","og_locale":"en_US","og_type":"article","og_title":"3D Touch Peek and Pop Tutorial | Zaven Blog","og_description":"In the \"3D Touch Peek and Pop Tutorial\", I will show you how to use the Peek and Pop feature in iOS app development. Read it and find out more about it.","og_url":"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/","og_site_name":"Zaven Blog","article_published_time":"2017-07-25T12:43:33+00:00","article_modified_time":"2025-04-08T17:55:08+00:00","og_image":[{"width":2808,"height":1872,"url":"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/Depositphotos_87968442_original.jpg","type":"image\/jpeg"}],"author":"Piotr Przeliorz","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Piotr Przeliorz","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/","url":"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/","name":"3D Touch Peek and Pop Tutorial | Zaven Blog","isPartOf":{"@id":"https:\/\/zaven.co\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/Depositphotos_87968442_original.jpg","datePublished":"2017-07-25T12:43:33+00:00","dateModified":"2025-04-08T17:55:08+00:00","author":{"@id":"https:\/\/zaven.co\/blog\/#\/schema\/person\/239fdb404827a4f3e06c090f2d463722"},"description":"In the \"3D Touch Peek and Pop Tutorial\", I will show you how to use the Peek and Pop feature in iOS app development. Read it and find out more about it.","breadcrumb":{"@id":"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/#primaryimage","url":"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/Depositphotos_87968442_original.jpg","contentUrl":"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2017\/07\/Depositphotos_87968442_original.jpg","width":2808,"height":1872,"caption":"Peek and Pop Tutorial"},{"@type":"BreadcrumbList","@id":"https:\/\/zaven.co\/blog\/3d-touch-peek-pop-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zaven.co\/blog\/"},{"@type":"ListItem","position":2,"name":"3D Touch Peek and Pop Tutorial"}]},{"@type":"WebSite","@id":"https:\/\/zaven.co\/blog\/#website","url":"https:\/\/zaven.co\/blog\/","name":"Zaven Blog","description":"Software development blog. Generative AI, web &amp; mobile applications.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zaven.co\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/zaven.co\/blog\/#\/schema\/person\/239fdb404827a4f3e06c090f2d463722","name":"Piotr Przeliorz","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zaven.co\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2c7baf93e58f6d190e3f7cf0859080c7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2c7baf93e58f6d190e3f7cf0859080c7?s=96&d=mm&r=g","caption":"Piotr Przeliorz"},"description":"Regardless of complicated surname, Piotr believes in simple solutions. He loves to create, to modify, to make mistakes in iOS apps and to correct them. And, last but not least, to have fun with every single line of new code.","sameAs":["https:\/\/www.linkedin.com\/in\/piotr-przeliorz-a01a9611a"],"url":"https:\/\/zaven.co\/blog\/author\/piotr-przeliorz\/"}]}},"_links":{"self":[{"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/posts\/938","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/comments?post=938"}],"version-history":[{"count":29,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/posts\/938\/revisions"}],"predecessor-version":[{"id":69753,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/posts\/938\/revisions\/69753"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/media\/961"}],"wp:attachment":[{"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/media?parent=938"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/categories?post=938"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/tags?post=938"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}