Returning Type Optional("Text") but I just want ("Text")

For some reason, my code keeps on showing up as an Optional and it's not letting my geocoder work. Any help is appreciated :)


import MapKit

import CoreLocationUI

import Firebase



struct Place: Identifiable {

    let id = UUID()

    var name: String

    var coordinate: CLLocationCoordinate2D

}



struct MapView: View {

    

    var empireStateBuilding =

    Place(name: "Empire State Building", coordinate: CLLocationCoordinate2D(latitude: 40.748433, longitude: -73.985656))

    

    @StateObject private var viewModel = ContentViewModel()

    

    @State var address = ""

    @State var addresses:[String] = []

    @State private var multipleAddress = ""

    

    

    let geocoder = CLGeocoder()

    @State private var result = "result of lat & long"

    @State private var lat = 0.0

    @State private var long = 0.0

    @State private var country = "country name"

    @State private var state = "state name"

    @State private var zip = "zip code"

    

    var body: some View {

        NavigationView {

            ZStack (alignment: .bottom) {

                Map(coordinateRegion: $viewModel.region, showsUserLocation: true)

                    .ignoresSafeArea()

                    .tint(.pink)

                    

                LocationButton(.currentLocation) {

                    viewModel.requestAllowOnceLocationPermission()

                }

                .foregroundColor(.white)

                .cornerRadius(8)

                .labelStyle(.iconOnly)

                .symbolVariant(.fill)

                .tint(.pink)

                .padding(.bottom)

                .padding(.trailing, 300)

                



                Button  {

                    

                    let multipleAddresses = addresses

                    

                    geocoder.geocodeAddressString(multipleAddress, completionHandler: {(placemarks, error) -> Void in

                                if((error) != nil){

                                    print("Error", error ?? "")

                                }

                                if let placemark = placemarks?.first {

                                    let coordinates:CLLocationCoordinate2D = placemark.location!.coordinate

                                    print("Lat: \(coordinates.latitude) -- Long: \(coordinates.longitude)")

                                    //added code

                                    result = "Lat: \(coordinates.latitude) -- Long: \(coordinates.longitude)"

                                    lat = coordinates.latitude

                                    long = coordinates.longitude

                                    print(result)

                                    print(addresses)

                                }

                            })

                } label: {

                    Image(systemName: "arrow.clockwise")

                }

                .padding(.leading, 300)

                .padding(.bottom)

                .cornerRadius(8)



            }

            List(0..<addresses.count, id: \.self) {i in Text(addresses[i]) }

        }

        .onAppear(perform: {

            downloadServerData()

        })

    }

    

    func downloadServerData() {

        let db = Firestore.firestore()

        db.collection("UserInfo").addSnapshotListener {(snap, err) in

            if err != nil{

                print("There is an error")

                return

            }

            for i in snap!.documentChanges {

                let documentId = i.document.documentID

                let address = i.document.get("address")

                DispatchQueue.main.async {

                    addresses.append("\(address)")

                    print(address)

                }

            }

        }

    }

    

    

    

    struct AnnotatedItem: Identifiable {

        let id = UUID()

        var name: String

        var coordinate: CLLocationCoordinate2D

    }

    

    struct MapView_Previews: PreviewProvider {

        static var previews: some View {

            MapView()

        }

    }

    

    //LocationButton

    final class ContentViewModel: NSObject, ObservableObject, CLLocationManagerDelegate  {

        @Published var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 40, longitude: 120), span: MKCoordinateSpan(latitudeDelta: 100, longitudeDelta: 100))

        

        let locationManager = CLLocationManager()

        

        override init() {

            super.init()

            locationManager.delegate = self

        }

        

        func requestAllowOnceLocationPermission() {

            locationManager.requestLocation()

        }

        

        func locationManager( _ _manager:CLLocationManager, didUpdateLocations locations: [CLLocation]){

            guard let latestLocation = locations.first else {

                // show an error

                return

            }

            DispatchQueue.main.async{

                self.region = MKCoordinateRegion(

                    center: latestLocation.coordinate,

                    span:MKCoordinateSpan(latitudeDelta:0.05, longitudeDelta:0.05))

            }

        }

        

        

        func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {

            print(error.localizedDescription)

        }

    }

}



struct MapView_Previews: PreviewProvider {

    static var previews: some View {

        MapView()

    }

}

The Array.first function returns an optional value, because the array could be empty. You have to unwrap that.

Which line do you get the problem ?

Returning Type Optional("Text") but I just want ("Text")
 
 
Q