ユーザが登録情報を記入する際にエラーを処理するために使用する、別のスウィフトファイルで宣言した拡張子があります。しかし、私のデバッグでStringを返す代わりに、エラーに応じて表示するためにアラートやimageViewsを使用したいと思っています。問題は、IBOutletをどのように渡したり、この拡張のリターンセクションでアラートを作成したりすることができないか分かりません。たとえば、firstNameが空の場合、firstNameテキストフィールドの近くに赤丸の警告(imageView)が表示されます。エラーを処理する私のアーキテクチャが間違っているのかもしれないし、多分それを行う方法がありますか?拡張エラーハンドラ
解決策を見つけるための正しい方向を教えていただければ幸いです。ここで
はここで拡張
import UIKit
enum RegistrationErrors: Error {
case invalidFirstName
case invalidLastName
case invalidCountry
}
extension RegistrationErrors: CustomStringConvertible {
var description: String {
switch self {
case .invalidFirstName:
return "FirstName cannot be empty"
case .invalidLastName:
return "LastName cannot be empty"
case .invalidCountry:
return "Country cannot be empty"
}
}
}
であるあなたのRegistrationErrors CustomStringConvertible拡張子は悪い考えではありません、私はこの拡張機能を使用する私のコード
func registrationUser(firstName: String, lastName: String, country: String) throws -> (String, String, String) {
guard let firstName = firstNameTextField.text , firstName.characters.count != 0 else {
throw RegistrationErrors.invalidFirstName
}
guard let lastName = lastNameTextField.text , lastName.characters.count != 0 else {
throw RegistrationErrors.invalidLastName
}
guard let country = countryTextField.text , country.characters.count != 0 else {
throw RegistrationErrors.invalidCountry
}
return (firstName, lastName, country)
}
// MARK: Actions
@IBAction func continueBtnTapped(_ sender: Any) {
do {
let (firstName, lastName, country) = try registrationUser(firstName: firstNameTextField.text!, lastName: lastNameTextField.text!, country: countryTextField.text!)
if let currentUser = FIRAuth.auth()?.currentUser?.uid {
DataService.instance.REF_BASE.child("users").child("profile").setValue(["firstName": firstName, "lastName": lastName, "country": country, "userId": currentUser])
performSegue(withIdentifier: "toUsersList", sender: self)
}
} catch let error as RegistrationErrors {
print(error.description)
} catch {
print(error)
}
}
関連:http://stackoverflow.com/questions/39176196/how-to-provide-a-localized-description-with-an-error-type-in-swift –
@MartinR実際、私はこれをその複製とみなすことを考えていました。私がしなかった唯一の理由は、これがOPが求めていたものかどうかは完全にはっきりしていなかったことです。 – matt