My Experience Publishing a React Native App as an iOS Developer

Publishing a React Native App I started my journey as an iOS developer through a bootcamp. The reason I ended up publishing an app using React Native was that iOS development felt like a somewhat closed ecosystem—you only build iOS apps using Xcode within the Apple environment. Focusing solely on iOS made me feel a bit trapped over time. Whether I end up getting a full-time job or working as a freelancer, I realized that for the long term, I need to expand my skill set beyond just iOS. While focusing on iOS is great, I felt there was no reason to distance myself from Android. I am also someone with a lot of interest in other development areas. I’d love to challenge myself with web development someday, though it might be tough right now. As these thoughts built up, I developed a strong desire to publish an Android app alongside my iOS ones, which ultimately led me to build an app with React Native. Why React Native? You might ask, "If you wanted to build an Android app, why did i...

How to Open, Set, and Save Environment Variables (Windows, macOS, Linux)

🪟 How to Set Environment Variables in Windows 1. Open the Environment Variables Window Right-click the Start menu and select System (or press Windows Key + X and choose System ). Click on Advanced system settings . Click the Environment Variables button. 2. Add a New Environment Variable Click New under the User variables or System variables section. Enter the Variable name and Variable value . Click OK . 3. Edit an Existing Environment Variable Select the variable you want to modify and click Edit . Update the Variable value and click OK . 4. Save and Apply Click OK on all open dialog windows to save your changes. Note: You must restart any currently open command prompts or applications for the changes to take effect. 🍎 How to Set Environment Variables in macOS 1. Open Terminal Go to Applications → Utilities → Terminal . 2. Set Temporary Environment Variables (Current Session Only) Bash export VARIABLE_NAME=value # Example: export PATH=$PATH:/new/path 3. Set Permanent...

How to Fix Auto Layout Constraint Conflicts and Spacing Issues (Question, Image, and Options)

The Problem I was facing an issue where the spacing between the question, image, and options was excessively large, resulting in poor readability. On top of that, constraint conflicts were occurring. The root cause was that it is mathematically impossible for Auto Layout to satisfy the following three constraints simultaneously: 20pt spacing from the question to the image view. 10pt spacing from the question label to the options stack view. 20pt spacing from the image view to the options stack view. The Solution To resolve this, I made the constraints dynamic. First, declare variables for the constraints: Swift private var questionToOptionsConstraint: NSLayoutConstraint ! private var questionToImageConstraint: NSLayoutConstraint ! private var imageToOptionsConstraint: NSLayoutConstraint ! Next, initialize these constraints in the setupConstraints() method, but do not activate them yet: Swift questionToOptionsConstraint = optionsStackView.topAnchor.constraint(equalTo: questio...

How to Fix Shared Progress Issues Across Different Difficulty Levels in SQLite

1. Preventing Data Conflicts with a Composite Primary Key Problem Previously, the level and quizGroup were not distinctly separated in the database. As a result, saving new progress would unintentionally overwrite existing data from other levels. Solution I updated the progress table to use a composite primary key consisting of both level and quizGroup . This ensures that progress is managed independently for each specific level and group. SQL CREATE TABLE IF NOT EXISTS progress ( level TEXT, quizGroup TEXT, lastQuestionIndex INTEGER , PRIMARY KEY (level, quizGroup) ); 2. Improving the Data Saving Mechanism Updating Progress for a Specific Level and Group In the saveProgress method, I updated the SQL query to include both level and quizGroup in the WHERE clause. This ensures we only update the progress for the targeted level and group. Swift let updateQuery = "UPDATE progress SET lastQuestionIndex = ? WHERE level = ? AND quizGroup = ?;" Appl...

How to Ignore Info.plist in Xcode Projects on GitHub

 This guide explains how to configure your Git repository to ignore the Info.plist file when pushing an Xcode project to GitHub. 1. Update Your .gitignore File First, you need to configure Git to ignore the Info.plist file. ① Check for a .gitignore file Bash ls -a If the file doesn't exist, create one: Bash touch .gitignore ② Edit the .gitignore file Open the file and add the following line: Plaintext # Ignore Xcode Info.plist file **/Info.plist 2. Remove an Already Tracked Info.plist from Git If the file has already been committed and pushed to GitHub, you need to manually remove it from Git's tracking index. ① Untrack Info.plist Bash git rm --cached path/to/Info.plist Example: Bash git rm --cached MyApp/Info.plist ② Commit and push the changes Bash git commit -m "Ignore Info.plist" git push origin main 3. Managing Info.plist for Team Collaboration Since Info.plist is now ignored, other developers won't have it when they clone the repository. To solve t...