-1
votes

Comment obtenir Rawvalue d'Enum en utilisant la sous-fonction?

J'ai un énumé défini comme ci-dessous.

var id = 1


1 commentaires

S'il vous plaît ne pas ajouter des balises arbitraires. Ce n'est pas associé à IOS, et il n'y a pas de code objectif dans votre question.


3 Réponses :


1
votes

Vous attribuez votre identifiant int code> à chaque cas, comme: xxx pré>

usage-1 strong> p>

let id = 1
if let type = PurchaseTimeType.allCases.first(where: { $0.id == id } ) {
    print("Title for \(id) is \(type.title)")
}


1 commentaires

J'utilise cette énumération pour afficher dans la tableView de sorte que cela ne fonctionnera pas si je vais assigner manuellement RAWVALUE. À la recherche de solution dynamique.



0
votes

Vous devez ajouter une init personnalisée avec ID comme celui-ci

let num = 1
if let purchaseTimeType = PurchaseTimeType(id:num) {
    print(purchaseTimeType.title())//ASAP
    print(purchaseTimeType.id())//1
}


7 commentaires

Vous recherchez une solution dynamique, supposons qu'il y a une autre fonction qui retournera la description, alors que dois-je faire?


@Pinkeshgjr Si vous avez une autre fonction qui renvoie la description, souhaitez-vous obtenir d'autres valeurs d'une chaîne de description?


Oui, supposons que nous avons plusieurs fonctions et que nous voulons obtenir le titre ou la description basé sur ID afin de ne pas fonctionner avec init.


@PinkeshgJR Voulez-vous obtenir le titre ou la description basé sur ID et obtenir le titre ou l'ID basé sur la description?


Seul le titre et la description basés sur ID, ID est une variable principale.


@Pinkeshgjr alors vous pouvez être imprimé (achetéTimeType.description ())


Merci beaucoup tu as sauvé mon temps :)



1
votes

Vous pouvez utiliser comme ci-dessous

class PurchaseTime {

    var id: Int!
    var title: String!
    init(id: Int, title: String) {

        self.id = id
        self.title = title
    }
}

enum PurchaseTimeType: Int,CaseIterable {
    case ASAP, ThisMonth, NextMonth

    var instance: PurchaseTime {

        switch self {

            case .ASAP:        return PurchaseTime(id: 1, title: "ASAP")
            case .ThisMonth:   return PurchaseTime(id: 2, title: "This Month")
            case .NextMonth:   return PurchaseTime(id: 3, title: "Next Month")
        }
    }
}

PurchaseTimeType.ASAP.instance.id
PurchaseTimeType.ASAP.instance.title


let id = 1
if let type = PurchaseTimeType.allCases.first(where: { $0.instance.id == id } ) {
    print(type.instance.title)
}


1 commentaires

Comment vais-je obtenir le titre de n'importe quel identifiant?