Skip to main content

Posts

Recent posts

How to speed up Xcode build time

Building time for My iOS app takes around 3-4 minutes when building the application from a clean state. A developer builds and runs the app many times per day to check his expressions, types, and syntax accumulating a lot of lost time waiting for the build to be finished by the end of the day. In order to solve this issue, it is imperative to refactor the complex expressions that are taking too long to compile into more simple ones. To do this do the following steps: Enable  -Xfrontend -warn-long-expression-type-checking=50  in  Other Swift flags . This flag will issue a warning for every expression that takes more than 50ms to compile. Refer below Xcode screenshot for where to make changes in Xcode. Refactor the highlighted expressions that took more than 50ms to build. You can see the highlighted expressions in Issue navigator section. Enjoy faster build time. 

iOS accessibility issue - focus goes to a random position

Recently, I faced an issue where the Accessibility(ADD) control goes to random position after selecting a table section/row. On one screen where I worked, there was requirement of collapsing and expanding table header. When user tried to collapse/expand the header, the ADD control goes to random position.  Initially, I tried to post the accessibility notification to set the ADD control to specific section, but it didn't work. (Generally, In most of the cases it works) UIAccessibility.post(notification: .layoutChanged, argument: sectionInstance) Secondly, I tried to use the below method. By using this method, I get a callback when an element has ADD focus. When I get a callback, I scrolled the table to the desired position and then post notification, but sadly it didn't work too. override func accessibilityElementDidBecomeFocused() Finally, I used the default scroll method ( scrollViewDidScroll ) where I got the regular callbacks when table scrolls. When a section is

Execute a method when a variable value changes in Swift

This post is about how to execute a function when a variable value changes. Instead of key-value observation, simply use a property observer for the variable.  For e.g: Whenever the value of variable named  allSlot  changes, the two lines will execute which are written in the  didSet  method. private var allSlot : [S tring ] = [] {         didSet {             slotTableView?.reloadData()             enableRightBarButton()         }      } Property observers:  https://docs.swift.org/swift-book/LanguageGuide/Properties.html#//apple_ref/doc/uid/TP40014097-CH14-ID262

How to apply custom font on attributed HTML text

Today, I came across a very challenging situation which yields into a great learning by end of the day. Let me give you more details about this to you. Task: I am getting attributed HTML text which already has multiple tags like bold and line break. I want to show the attributed text in custom font keeping the existing tags. Problem: When I applied custom font on attributed text, the existing tags like bold and line break overrides. Solution: I found a style tag which needs to apply on the attributed text. let modifiedFont = String (format: "<span style=\"color:#000000;font-family: '-apple-system', 'SFProText-Regular'; font-size: \( self . font ?. pointSize ?? 14.0 ) \">%@</span>" , htmlText) Code example: extension UITextView {     func setHTMLFromString (htmlText: String ) {         let modifiedFont = String (format: "<span style=\"color:#000000;font-family: '-apple-system&#

How to work with Charles proxy server

In this post, I am going to share a technique which will help you in debugging your mobile application code effortlessly even if your server is down. To set up the Charles server, follow the below steps:            ·     Install the free Charles software from  https://www.charlesproxy.com/download/ ·    Open Charles, go to Tools -> Map local ·    In map local window/popup, click add. Add the relevant details like Host, Port(8080), Path, Query of URL. ·    Under "map to" option:- Select the local JSON file ·    Click done and a popup will look like this: (location will have the URL string, the local path will have the path of JSON file) ·    Now go to Tools - Rewrite ·    In the rewrite popup, Select the "Enable rewrite option" and add the previous URL here ·    Add the following rewrite rule ·    Click ok and apply all the settings. ·    Now run the application in simulator and API's response will be read f

Test cases code coverage in Xcode

How to check what percentage of unit test cases cover your classes/framework/project:- After writing unit test cases, make sure your all test cases run successfully. To cross check this, Goto Product menu->Perform action-> Test without building Goto Edit scheme: Select Test and select the "Gather coverage data" option. To see the code coverage, perform step no 1 once again. Open the last tab(report navigator) on the left panel. Open the coverage tab(at the top panel)