{"id":1088,"date":"2018-07-24T11:56:37","date_gmt":"2018-07-24T09:56:37","guid":{"rendered":"https:\/\/zaven.co\/blog\/?p=1088"},"modified":"2025-04-08T19:55:08","modified_gmt":"2025-04-08T17:55:08","slug":"core-ml-machine-learning-for-ios","status":"publish","type":"post","link":"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/","title":{"rendered":"Core ML: Machine Learning for iOS"},"content":{"rendered":"<p>You have probably heard phrases like \u201cMachine Learning\u201d or \u201cArtificial Intelligence\u201d without knowing exactly what they mean. In this article, I will shed <strong>some light on \u201cWhat Machine Learning is\u201d by showing you a Core ML iOS sample<\/strong>.<!--more--><\/p>\n<p>It&#8217;s really hard to explain \u201c<em>What Machine Learning is<\/em>\u201d in one sentence because nowadays it is a sprawling field. In my opinion, the easiest way to reply to that question is: learning from experience.<\/p>\n<h2>What is Machine Learning?<\/h2>\n<p>In computer science, <em>Machine Learning means that a computer is able to learn from experience in order to understand data<\/em> (for example; images, text, number or almost anything that we could express as binary data).<\/p>\n<p><strong>Equally important as data is an algorithm, which tells the computer how to learn from that data.<\/strong> After applying that algorithm to the data on a powerful computer, we could get an artifact that is created by the training process as a result. That artifact can be exported to lightweights executable &#8211; trained model.<\/p>\n<h3>What is a machine learning model?<\/h3>\n<p><strong>Apple Inc. introduced Core ML framework in 2017<\/strong> which provides functionality to integrate trained machine learning models into an iOS or a macOS app.<\/p>\n<div id=\"attachment_1089\" style=\"width: 740px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1089\" class=\"wp-image-1089 size-medium\" src=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/coreML-model-730x203.png\" alt=\"machine learning models\"   srcset=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/coreML-model-730x203.png 730w, https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/coreML-model.png 847w\" sizes=\"auto, (max-width: 730px) 100vw, 730px\" \/><p id=\"caption-attachment-1089\" class=\"wp-caption-text\">Apple Core ML model. Source: medium.com<\/p><\/div>\n<p>As mobile developers, we don&#8217;t need to be an expert in machine learning at all. We just want to play with machine learning features, without wasting time on creating our own trained models.<\/p>\n<p>Fortunately, you could find hundreds of trained models on the internet. For example from <a href=\"https:\/\/github.com\/BVLC\/caffe\/wiki\/Model-Zoo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Caffe Model Zoo<\/a>, <a href=\"https:\/\/github.com\/tensorflow\/models\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">TensorFlow Models<\/a> or <a href=\"https:\/\/mxnet.incubator.apache.org\/model_zoo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">MXNet Model Zoo<\/a>. That easily converted to Core ML model format (models with a&nbsp;<code>.mlmodel<\/code> file extension)&nbsp; using conversion tools like <code>mxnet-to-coreml<\/code> or <code>tfcoreml<\/code>.<\/p>\n<p>You can also get a model from <a href=\"https:\/\/developer.apple.com\/machine-learning\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Apple Developer<\/a> which works out of the box.<\/p>\n<p>Let\u2019s get through the process of<strong> integrating a Core ML model into your app<\/strong> step by step.<\/p>\n<h2>Core ML &#8211; Machine Learning iOS<\/h2>\n<p>I\u2019ve created a sample project which shows <em>how to use a machine learning model on iOS 11 using Core ML<\/em>.<\/p>\n<p>For this purpose, I\u2019ve used Vision &#8211; a framework for image analysis, which is built on top of Core ML, and the <a href=\"https:\/\/pixabay.com\/api\/docs\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Pixabay API<\/a>, that allows us to download photos.<\/p>\n<div id=\"attachment_1092\" style=\"width: 684px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1092\" class=\"size-full wp-image-1092\" src=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/vision.jpg\" alt=\"core Ml model\"  ><p id=\"caption-attachment-1092\" class=\"wp-caption-text\">Core ML model. Source: developer.apple.com<\/p><\/div>\n<p><strong>The idea is simple:<\/strong><\/p>\n<ol>\n<li>Download pictures from Pixabay (thanks to the <a href=\"https:\/\/github.com\/onevcat\/Kingfisher\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Kingfisher<\/a> library for downloading and caching images from the web)<\/li>\n<li>Predict where a photo was taken based on the view from that photo<\/li>\n<\/ol>\n<p>The first part of the work is pretty easy: make the API call using <code>URLSession<\/code>, parse it and display the results in <code>UICollectionView<\/code>.<\/p>\n<p>Once we have got our image downloaded, we can make a prediction. First, we need to create our <code>VNCoreMLModel<\/code>,&nbsp; whose base class is a container for a Core ML model with Vision requests (for that app I have used <code>RN1015k500<\/code>).<\/p>\n<p>After that, we need to initialize our request object, which is a type of <code>VNCoreMLRequest<\/code>. To do that, we need our previously initialized object from the <code>VNCoreMLModel<\/code>. The request object is initialized with completion closure which returns <code>VNRequest<\/code> or <code>Error<\/code>.<\/p>\n<p>The last object that we need to create for our prediction is <code>VNImageRequestHandler<\/code>, which accepts data types like:<\/p>\n<ul>\n<li>CGImage<\/li>\n<li>CVPixelBuffer<\/li>\n<li>Data<\/li>\n<li>URL<\/li>\n<\/ul>\n<p>If we try to predict an image, the easiest way is for us to use the <code>CGImage<\/code> data type. It&#8217;s available via the <code>CGImage<\/code> property on <code>UIImage<\/code>.<\/p>\n<p>Now that we have got all the necessary components, we can call the perform method on the handler (we can call many requests at the same time because the perform method accepts an array of <code>VNCoreMLRequest<\/code>).<\/p>\n<pre><code class=\"language-swift\">\n\nprivate func predict(`for` image: CGImage) {\n        guard let visionModel = try? VNCoreMLModel(for: mlModel.model) else { return }\n        let request = VNCoreMLRequest(model: visionModel) { request, error in\n            self.processRequest(request: request)\n        }\n        request.imageCropAndScaleOption = .centerCrop\n        let handler = VNImageRequestHandler(cgImage: image)\n        do {\n            try handler.perform([request])\n        } catch {\n            print(error)\n        }\n    }\n}\n<\/code><\/pre>\n<p>The final step of<strong> integrating a Core ML model into an app<\/strong> is to map our <code>VNRequest<\/code> to a data format which can be used in the user interface. In our case, we want to get the location coordinates of the place where a photo was taken.<\/p>\n<p>First, we need access to the prediction results via the result property at the <code>VNRequest<\/code> object and cast them to an array of <code>VNClassificationObservation<\/code>. The rest of the work depends on which kind of output our Core ML model returns. Here is a snippet of the code which I used to process the request.<\/p>\n<pre><code class=\"language-swift\">\nprivate func processRequest(request: VNRequest) {\n        guard let observations = request.results as? [VNClassificationObservation] else {  return }\n        let results = observations.prefix(through: 0).map { ($0.identifier, Double($0.confidence)) }.first\n        guard let coorindatesData = results?.0 else { return }\n        guard let confidence = results?.1 else { return }\n        let latLong = coorindatesData.components(separatedBy: \"\\t\").dropFirst().compactMap { Double($0) }\n        guard let lat = latLong.first else { return }\n        guard let long = latLong.last else { return }\n        let result = ImageRecognitionData(latitude: lat, longitude: long, confidence: confidence)\n        DispatchQueue.main.async {\n            self.completion(result)\n        }\n    }\n<\/code><\/pre>\n<p>Once the whole request is processed, I pass the result in completion and update the location on the map. And that&#8217;s it! Now you know <i>how to use a machine learning model on iOS 11 using Core ML<\/i>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-1097\" src=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/Image-uploaded-from-iOS-1-600x1300.png\" alt=\"Core ML: Machine Learning for iOS\"   srcset=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/Image-uploaded-from-iOS-1-600x1300.png 600w, https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/Image-uploaded-from-iOS-1-887x1920.png 887w, https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/Image-uploaded-from-iOS-1.png 1125w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1098 alignleft\" src=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/Image-uploaded-from-iOS-600x1300.png\" alt=\"coreml models\"   srcset=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/Image-uploaded-from-iOS-600x1300.png 600w, https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/Image-uploaded-from-iOS-887x1920.png 887w, https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/Image-uploaded-from-iOS.png 1125w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>I hope that with this Core ML: Machine Learning for iOS tutorial I have shed some light on Machine Learning<\/strong>. Remember this is only one of the ways to use Core ML to <em>build more intelligent apps with machine learning<\/em>. There are a lot of different features related to Core ML: Machine Learning for iOS: for example, you can work with not only pictures but also with text, video or audio.<\/p>\n<p>Check our another article: <a href=\"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/\">Test-driven development in Agile PLM<\/a>: an experimental test.<\/p>\n<p>&nbsp;<\/p>\n<hr>\n<p>If you want to learn more about Core ML check out the <a href=\"https:\/\/developer.apple.com\/videos\/wwdc2017\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">WWDC sessions from 2017<\/a>. Feel free to check the entirety of the <a href=\"https:\/\/github.com\/piotrprzeliorz\/core-ml-sample-ios\" rel=\"nofollow\">application code<\/a> and share your comments about \u201cWhat is Machine Learning?\u201d below.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You have probably heard phrases like \u201cMachine Learning\u201d or \u201cArtificial Intelligence\u201d without knowing exactly what they mean. In this article, I will shed some light on \u201cWhat Machine Learning is\u201d by showing you a Core ML iOS sample.<\/p>\n","protected":false},"author":15,"featured_media":1102,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59,57,5],"tags":[38,109,107,111,86,108,36,19,106,8,110],"class_list":["post-1088","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agile-methodology","category-ios-development","category-tutorials","tag-app-ios-developer","tag-apple","tag-core-ml","tag-core-ml-machine-learning-for-ios","tag-ios","tag-ios-11","tag-ios-app-development","tag-ios-development","tag-machine-learning","tag-tutorial","tag-vision"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.8.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Core ML Models: Machine Learning iOS Tutorial | Zaven Blog<\/title>\n<meta name=\"description\" content=\"You, surely, has heard about Machine Learning. Have you known that such solutions may be used by Apple developers? Check out Core ML models on Zaven blog.\" \/>\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\/core-ml-machine-learning-for-ios\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Core ML Models: Machine Learning iOS Tutorial | Zaven Blog\" \/>\n<meta property=\"og:description\" content=\"You, surely, has heard about Machine Learning. Have you known that such solutions may be used by Apple developers? Check out Core ML models on Zaven blog.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/\" \/>\n<meta property=\"og:site_name\" content=\"Zaven Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-24T09:56:37+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\/2018\/07\/architecture-3327884_1920.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1277\" \/>\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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/\",\"url\":\"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/\",\"name\":\"Core ML Models: Machine Learning iOS Tutorial | Zaven Blog\",\"isPartOf\":{\"@id\":\"https:\/\/zaven.co\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/architecture-3327884_1920.jpg\",\"datePublished\":\"2018-07-24T09:56:37+00:00\",\"dateModified\":\"2025-04-08T17:55:08+00:00\",\"author\":{\"@id\":\"https:\/\/zaven.co\/blog\/#\/schema\/person\/239fdb404827a4f3e06c090f2d463722\"},\"description\":\"You, surely, has heard about Machine Learning. Have you known that such solutions may be used by Apple developers? Check out Core ML models on Zaven blog.\",\"breadcrumb\":{\"@id\":\"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/#primaryimage\",\"url\":\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/architecture-3327884_1920.jpg\",\"contentUrl\":\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/architecture-3327884_1920.jpg\",\"width\":1920,\"height\":1277,\"caption\":\"Core ML models\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zaven.co\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Core ML: Machine Learning for iOS\"}]},{\"@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":"Core ML Models: Machine Learning iOS Tutorial | Zaven Blog","description":"You, surely, has heard about Machine Learning. Have you known that such solutions may be used by Apple developers? Check out Core ML models on Zaven blog.","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\/core-ml-machine-learning-for-ios\/","og_locale":"en_US","og_type":"article","og_title":"Core ML Models: Machine Learning iOS Tutorial | Zaven Blog","og_description":"You, surely, has heard about Machine Learning. Have you known that such solutions may be used by Apple developers? Check out Core ML models on Zaven blog.","og_url":"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/","og_site_name":"Zaven Blog","article_published_time":"2018-07-24T09:56:37+00:00","article_modified_time":"2025-04-08T17:55:08+00:00","og_image":[{"width":1920,"height":1277,"url":"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/architecture-3327884_1920.jpg","type":"image\/jpeg"}],"author":"Piotr Przeliorz","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Piotr Przeliorz","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/","url":"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/","name":"Core ML Models: Machine Learning iOS Tutorial | Zaven Blog","isPartOf":{"@id":"https:\/\/zaven.co\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/#primaryimage"},"image":{"@id":"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/#primaryimage"},"thumbnailUrl":"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/architecture-3327884_1920.jpg","datePublished":"2018-07-24T09:56:37+00:00","dateModified":"2025-04-08T17:55:08+00:00","author":{"@id":"https:\/\/zaven.co\/blog\/#\/schema\/person\/239fdb404827a4f3e06c090f2d463722"},"description":"You, surely, has heard about Machine Learning. Have you known that such solutions may be used by Apple developers? Check out Core ML models on Zaven blog.","breadcrumb":{"@id":"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/#primaryimage","url":"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/architecture-3327884_1920.jpg","contentUrl":"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2018\/07\/architecture-3327884_1920.jpg","width":1920,"height":1277,"caption":"Core ML models"},{"@type":"BreadcrumbList","@id":"https:\/\/zaven.co\/blog\/core-ml-machine-learning-for-ios\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zaven.co\/blog\/"},{"@type":"ListItem","position":2,"name":"Core ML: Machine Learning for iOS"}]},{"@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\/1088","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=1088"}],"version-history":[{"count":22,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/posts\/1088\/revisions"}],"predecessor-version":[{"id":69805,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/posts\/1088\/revisions\/69805"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/media\/1102"}],"wp:attachment":[{"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/media?parent=1088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/categories?post=1088"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/tags?post=1088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}