Apr 2, 2024 7 min read

Xcode: Create a New SwiftUI Project

We tell the Xcode wizard that we want to create an App for the iOS Operating System.

Xcode: Create a New SwiftUI Project
Discovery Tree - Project "<Placeholder>Bridge" > In progress "Make new Xcode Project"

ES

Create New Project...
Xcode - Create New Project...

To create a new project, first of all we open Xcode and click on the Create New Project... button.

Create an App for the iOS Operating System
Xcode - "Choose a template for your project" - "iOS" > "App"

We tell the Xcode wizard that we want to create an App for the iOS Operating System.

Product Name
Xcode - "Choose options for your new project" - Product Name: "<Template>Bridge"

To name the project, replace <Template>Bridge with the name of the App.

  • For example: WeatherBridge.
Team
Xcode - "Choose options for your new project" - Team: "Add account..."

To run the new app on a simulator it is not necessary to add an account.

  • However, there are a number of advantages that make it advisable to create one. By associating your Apple ID with Xcode you will have
    • the ability to also run your apps on a physical device.
    • access to developer resources such as beta software.
  • If you don't have your Apple ID associated with Xcode yet, you can follow the link below Xcode: Add your Apple ID Account.
Organization Identifier
Xcode - "Choose options for your new project" - Organization identifier: "com.example"

This text field is a crucial part of the Bundle Identifier of the app, which uniquely identifies your app in the App Store and on devices.

  • It is usually structured in reverse domain name notation and precedes the app name to create the full bundle ID.
    • For example, if your app is called MyApp and your organization's website is [www.example.com], a common organization identifier would be com.example. Therefore, in this case the Bundle ID will be com.example.MyApp.
      • If you do not have a domain, you can create a unique identifier based on your personal name, such as name.johndoe.
Interface, Language, Storage
Xcode - "Choose options for your new project" - Interface: SwiftUI - Language: "Swift" - Storage: "none"

For SwiftUI projects without access to databases, you can leave the default values.

Include Tests
Xcode - "Choose options for your new project" - include Tests: off

We chose not to check the Include Tests option that adds test targets automatically.

This decision is based on two main considerations regarding user interface (UI) testing:

  • Performance Impact
    • UI tests simulate user interactions with the application interface, which, while valuable for end-to-end testing, tend to be significantly slower than unit tests.
      • This slower execution can affect the speed of our development and testing cycle, especially in the early stages of development, when we want to maintain agility.
  • Utility and focus
    • At this stage, our main focus is to build the core functionality of our app and ensure its reliability through Unit Tests.
    • Unit tests allow us to validate the logic and behavior of individual components in isolation, providing a fast and efficient way to detect and correct bugs at an early stage.

In another post we will see how to integrate the Unit Tests once the project is already created.

  • With this approach
    • we have control over the test environment and ensure that it is adapted to our specific needs.
    • We can focus on unit tests, running tests more frequently, benefiting from their fast execution to maintain a robust and reliable code base.
  • It is worth noting that the decision to exclude UI testing now does not prevent us from incorporating it later.
    • As our application grows and the need for comprehensive UI testing becomes more apparent, we can easily add a UI testing target to our project.
Select a folder

Indicate in which folder you want the project to be hosted.

End of project creation

Xcode - Snapshot of "WeatherBridge" project

Run (⌘R)

Xcode: Run a Project

Commit

e - New Xcode (15.3) project - Interface: SwiftUI, Language: Swift, Include Tests: off

EN

Xcode: Crear un nuevo proyecto SwiftUI

Discovery Tree - Proyecto "<Placeholder>Bridge" >En progreos "Make new Xcode Project"
Create New Project...
Xcode - Clic sobre el botón "Create New Project..."

Para crear un nuevo proyecto, primero de todo abrimos Xcode y hacemos clic sobre le botón Create New Project....

Crear una App para el Sistema Operativo iOSc
Xcode - "Choose a template for your new project" - "iOS" > "App"

Al asistente de Xcode le indicamos que queremos crear una App para el Sistema Operativo iOS.

Product Name
Xcode - "Choose options for your new project" - Product Name: "<Template>Bridge"

Para darle nombre al proyecto, sustituye <Template>Bridge por el nombre de la App.

  • Por ejemplo: WeatherBridge
Team
Xcode - "Choose options for your new project" - Team: "Add account..."

Para ejecutar la nueva app en un simulador no hace falta añadir ninguna cuenta.

  • Sin embargo hay una serie de ventajas que hace aconsejable la creación de ésta. Asociando tu ID de Apple a Xcode tendrás
    • la posibilidad de también ejecutar tus apps en un dispositivo físico.
    • acceso a recursos para desarrolladores como software beta.
  • Si todavía no tienes tu ID de Apple asociado a Xcode, puedes seguir el siguiente enlace Xcode: Añadir tu cuenta de Apple ID.
Organization Identifier
Xcode - "Choose options for your new project" - Organization identifier: "com.example"

Este campo de texto es una parte crucial del Bundle Identifier de la app, el cual identifica de forma única tu app en la App Store y en los dispositivos.

  • Suele estructurarse en notación inversa de nombres de dominio y precede al nombre de la aplicación para crear el ID del paquete completo.
    • Por ejemplo, si tu app se llama MyApp y el sitio web de tu organización es [www.example.com], un identificador de organización común sería com.example. Por lo tanto, en este caso el Bundle ID será com.example.MyApp.
      • Si no tienes un dominio, puedes crear un identificador único basado en tu nombre personal, como por ejemplo "name.johndoe".
Interface, Language, Storage
Xcode - "Choose options for your new project" - Interface: SwiftUI - Language: "Swift" - Storage: "none"

Para proyectos SwiftUI sin acceso a Bases de Datos, puedes dejar los valores por defecto.

Include Tests
Xcode - "Choose options for your new project" - include Tests: off

Optamos por no marcar la opción "Include Tests" que añade objetivos (En targets) de prueba automáticamente.

Esta decisión se basa en dos consideraciones principales relativas a las pruebas de interfaz de usuario (IU (EN UI Tests)):

  • **Impacto en el rendimiento **
    • Las pruebas de interfaz de usuario simulan las interacciones del usuario con la interfaz de la aplicación, que, si bien son valiosas para las pruebas de extremo a extremo, tienden a ser significativamente más lentas que las pruebas unitarias.
      • Esta ejecución más lenta puede afectar a la velocidad de nuestro ciclo de desarrollo y pruebas, especialmente en las primeras fases del desarrollo, cuando queremos mantener la agilidad.
  • **Utilidad y enfoque:
    • En esta etapa, nuestro enfoque principal es construir la funcionalidad central de nuestra app y asegurar su confiabilidad a través de pruebas unitarias (EN Unit Tests).
    • Las pruebas unitarias nos permiten validar la lógica y el comportamiento de los componentes individuales de forma aislada, ofreciendo una forma rápida y eficaz de detectar y corregir errores en una fase temprana.

En otra entrada veremos como integrar los Tests Unitarios una vez el proyecto ya está creado.

  • Con este enfoque
    • tenemos el control sobre el entorno de pruebas y garantizamos que se adapte a nuestras necesidades específicas.
    • nos podemos centrar en las pruebas unitarias, ejecutando pruebas con mayor frecuencia, beneficiándonos de su rápida ejecución para mantener una base de código robusta y fiable.
  • Vale la pena señalar que la decisión de excluir las pruebas de interfaz de usuario ahora no nos impide incorporarlas más adelante.
    • A medida que nuestra aplicación crezca y se haga más evidente la necesidad de realizar pruebas de interfaz de usuario exhaustivas, podremos añadir fácilmente un objetivo (EN target) de pruebas de interfaz de usuario a nuestro proyecto.

Seleccionar una carpeta

Indica en que carpeta quieres que se aloje el proyecto.

Fin de la creación del proyecto

Xcode - Snapshot del proyecto "WeatherBridge"

Este es el aspecto de nuestro proyecto en Xcode.

Ejecuta (⌘R)

Xcode: Ejecutar un proyecto

Commit

e - New Xcode (15.3) project - Interface: SwiftUI, Language: Swift, Include Tests: off
Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to Swift Legacy Bridge.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.