>

사용자가 이미지에서 편집 한 내용에 따라 다른 단계와 값으로 이메일을 보내려고합니다. 이를 위해 UserDefaults를 사용하여 값을 저장합니다.

그런 다음 UIAlertController에 다음 코드가 있습니다.

alert.addAction(UIAlertAction(title: "Send", style: .default)
        { action -> Void in
            //i is the last step register
            let nombre = alert.textFields![0]
            for n in 1...self.i {
                print("Step \(n): \(self.filterUserDefaults.string(forKey: "Step_\(n)")!)")
            }
            let filters = [
                "Brillo",
                "Exposicion",
                "Contraste",
                "Saturacion",
                "Saturacion_color",
                "Temperatura",
                "Blanco_Negro",
                "HUE",
                "Tintado_Rojo",
                "Tintado_Rosa",
                "Tintado_Naranja",
                "Tintado_Amarillo",
                "Tintado_Purpura",
                "Tintado_Verde",
                "Tintado_Azul",
                "Tintado_Marron",
                "Tintado_Gris"]
            for filter in filters {
                print("\(filter) = \(self.filterUserDefaults.float(forKey: filter).roundTo(places: 3))")
            }
            self.sendMail(filtro: nombre.text!, body: "XXXX")
        })
        present(alert, animated: true)
    }
    func sendMail(filtro: String, body: String) {
        if MFMailComposeViewController.canSendMail() {
            let mail = MFMailComposeViewController()
            mail.mailComposeDelegate = self
            mail.setToRecipients(["blablabla@gmail.com"])
            mail.setSubject("Filtro \(filtro)")
            mail.setMessageBody(body, isHTML: true)
            present(mail, animated: true)
        } else {
            print("Error presenting email app.")
        }
    }

인쇄가 예상대로 작동하지만 문제는 이러한 인쇄를 sendMail 함수의 본문에 넣는 것입니다.

나는 시도했다 :

           var steps: [String]?
            for n in 1...self.i {
                steps = ["Step \(n): \(self.filterUserDefaults.string(forKey: "Step_\(n)")!)"]
            }
            .
            .
            .
            self.sendMail(filtro: nombre.text!, body: steps!.joined(separator: "\n"))

그러나 마지막 단계 만 본문이 아닌 본문의 이메일에 기록됩니다 ...

누구든지 나를 도울 수 있습니까?

미리 감사드립니다!


  • 답변 # 1

    거의 거기에 있습니다. 배열 변수를 초기화하고 사용해야합니다. append

    var steps = [String]()
    for n in 1...self.i {
        steps.append("Step \(n): \(self.filterUserDefaults.string(forKey: "Step_\(n)")!)")
    }
    ...
    self.sendMail(filtro: nombre.text!, body: steps.joined(separator: "\n"))
    
    

  • 답변 # 2

    당신은 다음 코드를 시도해 볼 수 있습니다

    var steps: String = ""
    for n in 1...self.i {
    steps += "Step \(n): \(self.filterUserDefaults.string(forKey: "Step_\(n)")!)"
    }
    
    

  • 이전 python - 연속적인 색조를 가진 Seaborn 쌍 그림?
  • 다음 프리즘 주입이 Prism Unity와 작동하지 않습니다