Skip to main content

Build an integrating artificial intelligence (AI)-Powered Mobile App

Creating an AI-powered mobile app involves integrating artificial intelligence (AI) technologies to solve specific problems or provide unique features. Here's an overview of how to approach building an AI-powered mobile app: Key Steps to Build an AI-Powered Mobile App 1. Define the App's Purpose and Use Case Identify the problem your app will solve or the value it will offer. Examples of AI use cases in mobile apps: Chatbots (e.g., virtual assistants like Siri) Image Recognition (e.g., object detection, face recognition) Speech Recognition (e.g., voice commands, transcription) Recommendation Systems (e.g., personalized content or product recommendations) Predictive Analysis (e.g., health tracking, financial forecasting) Natural Language Processing (NLP) (e.g., sentiment analysis, language translation) 2. Choose an AI Technology or Framework Select the appropriate AI technologies or frameworks based on your use case: Machine Learning : Core frameworks: TensorFlow, PyTorch,...

JSON Parsing with Codable in Swift - Nested JSON Model

#Swift, to supporting decoding and encoding we must adopt the #NSCoding protocol and implement its methods. 

#Apple has introduced a new way to decode and encode the #JSON data using with Codable since Swift 4. 

You need to consume the following API to search and display images. - Flickr

Https://www.flickr.com/services/api/flickr.photos.search.htm The API results in search results for a

Documentation on this page to get the image URLS:

https://www.flickr.com/services/api/misc.urls.html

XXXXXXXX - API Key

Open Test Api - https://api.flickr.com/services/rest/?method=flickr.galleries.getPhotos&api_key=XXXXXXXX&gallery_id=66911286-72157647277042064&format=json&nojsoncallback=1


Model: - 

import Foundation


struct ResponseCodable : Codable {

    let photos : Photos?

    let stat : String?


    enum CodingKeys: String, CodingKey {


        case photos = "photos"

        case stat = "stat"

    }


    init(from decoder: Decoder) throws {

        let values = try decoder.container(keyedBy: CodingKeys.self)

        photos = try values.decodeIfPresent(Photos.self, forKey: .photos)

        stat = try values.decodeIfPresent(String.self, forKey: .stat)

    }


}


struct Photos : Codable {

    let page : Int?

    let pages : Int?

    let perpage : Int?

    let total : Int?

    let photo : [Photo]?


    enum CodingKeys: String, CodingKey {


        case page = "page"

        case pages = "pages"

        case perpage = "perpage"

        case total = "total"

        case photo = "photo"

    }


    init(from decoder: Decoder) throws {

        let values = try decoder.container(keyedBy: CodingKeys.self)

        page = try values.decodeIfPresent(Int.self, forKey: .page)

        pages = try values.decodeIfPresent(Int.self, forKey: .pages)

        perpage = try values.decodeIfPresent(Int.self, forKey: .perpage)

        total = try values.decodeIfPresent(Int.self, forKey: .total)

        photo = try values.decodeIfPresent([Photo].self, forKey: .photo)

    }


}


struct Photo : Codable {

    let id : String?

    let owner : String?

    let secret : String?

    let server : String?

    let farm : Int?

    let title : String?

    let ispublic : Int?

    let isfriend : Int?

    let isfamily : Int?

    let is_primary : Int?

    let has_comment : Int?


    enum CodingKeys: String, CodingKey {


        case id = "id"

        case owner = "owner"

        case secret = "secret"

        case server = "server"

        case farm = "farm"

        case title = "title"

        case ispublic = "ispublic"

        case isfriend = "isfriend"

        case isfamily = "isfamily"

        case is_primary = "is_primary"

        case has_comment = "has_comment"

    }


    init(from decoder: Decoder) throws {

        let values = try decoder.container(keyedBy: CodingKeys.self)

        id = try values.decodeIfPresent(String.self, forKey: .id)

        owner = try values.decodeIfPresent(String.self, forKey: .owner)

        secret = try values.decodeIfPresent(String.self, forKey: .secret)

        server = try values.decodeIfPresent(String.self, forKey: .server)

        farm = try values.decodeIfPresent(Int.self, forKey: .farm)

        title = try values.decodeIfPresent(String.self, forKey: .title)

        ispublic = try values.decodeIfPresent(Int.self, forKey: .ispublic)

        isfriend = try values.decodeIfPresent(Int.self, forKey: .isfriend)

        isfamily = try values.decodeIfPresent(Int.self, forKey: .isfamily)

        is_primary = try values.decodeIfPresent(Int.self, forKey: .is_primary)

        has_comment = try values.decodeIfPresent(Int.self, forKey: .has_comment)

    }


}


Request method:-


        var photoList = [Photo]()



        if let url = URL(string: urlString) {

            if let data = try? Data(contentsOf: url) {

                // we're OK to parse!

                parse(json: data)

            }

        }




func parse(json: Data) {

        let decoder = JSONDecoder()

        do{

            let jsonPetitions = try decoder.decode(ResponseCodable.self, from: json)

            print(jsonPetitions)

            let dataInfo = jsonPetitions.photos?.photo

            photoList = dataInfo!

        }catch{

            print(error.localizedDescription)

        }

    }

Comments