IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Swift Discussion :

Cast d'un objet / Passage de l'objective C en Swift


Sujet :

Swift

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut Cast d'un objet / Passage de l'objective C en Swift
    Salut tout le monde,

    J'ai du mal à trouver la solution à mon problème.

    J'ai le code suivant en Objective C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    @interface AAPLCollectionViewWrapper : NSObject
     
    + (UIView *)wrapperForCollectionView:(UICollectionView *)collectionView mapping:(AAPLDataSourceMapping *)mapping
    {
        if (!collectionView)
            return nil;
     
        BOOL measuring = NO;
     
        if ([collectionView isKindOfClass:[AAPLCollectionViewWrapper class]])
            measuring = ((AAPLCollectionViewWrapper *)collectionView).measuring;
     
        return (UIView *)[[AAPLCollectionViewWrapper alloc] initWithCollectionView:collectionView mapping:mapping measuring:measuring];
    }
    le cast de l'object AAPLCollectionViewWrapper en UIView, fonctionne très bien

    Quand j'essaye de passer ce code en Swift :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        return (CollectionViewWrapper(collectionView: collectionView, mapping: mapping, measuring: measuring) as! UIView)
    Mais le compilateur met l'erreur suivante :

    Cast from 'CollectionViewWrapper' to unrelated type 'UIView' always fails

    Ou est mon erreur ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par rvzip64 Voir le message
    Salut tout le monde,

    J'ai du mal à trouver la solution à mon problème.

    J'ai le code suivant en Objective C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    @interface AAPLCollectionViewWrapper : NSObject
     
    + (UIView *)wrapperForCollectionView:(UICollectionView *)collectionView mapping:(AAPLDataSourceMapping *)mapping
    {
        if (!collectionView)
            return nil;
     
        BOOL measuring = NO;
     
        if ([collectionView isKindOfClass:[AAPLCollectionViewWrapper class]])
            measuring = ((AAPLCollectionViewWrapper *)collectionView).measuring;
     
        return (UIView *)[[AAPLCollectionViewWrapper alloc] initWithCollectionView:collectionView mapping:mapping measuring:measuring];
    }
    le cast de l'object AAPLCollectionViewWrapper en UIView, fonctionne très bien

    Quand j'essaye de passer ce code en Swift :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        return (CollectionViewWrapper(collectionView: collectionView, mapping: mapping, measuring: measuring) as! UIView)
    Mais le compilateur met l'erreur suivante :

    Cast from 'CollectionViewWrapper' to unrelated type 'UIView' always fails

    Ou est mon erreur ?
    Tu ne montres pas tout le code swift, donc on ne peut faire suer des suppositions....

    À l'instar de @interface AAPLCollectionViewWrapper : NSObject, si tu as déclaré class CollectionViewWrapper : NSObject, il est parfaitement normal que le compilateur refuse de le caster en UIView. C'est ce que dit le message:
    Cast from 'CollectionViewWrapper' to unrelated type 'UIView' always fails

    Pour que le cast soit accepté par le compilateur, il faut que les classes soient reliées par l'héritage:
    class CollectionViewWrapper : UIView devrait régler le problème.

    Rq: swift est beaucoup moins permissif qu'Objective-C et donc beaucoup plus sécurisé (et j'aime ça!).

Discussions similaires

  1. cast d'un objet vers des types dynamiques
    Par aymen007 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 25/06/2008, 09h31
  2. Réponses: 2
    Dernier message: 06/03/2007, 19h38
  3. [POO] Erreur suite à un cast sur un objet
    Par RogerB dans le forum Langage
    Réponses: 3
    Dernier message: 02/11/2006, 13h56
  4. [C#] Evenements & cast de l'objet Sender
    Par Yannick038 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 29/09/2006, 15h34
  5. Cast d'un objet d'une TObjectList
    Par maredami dans le forum Langage
    Réponses: 21
    Dernier message: 23/03/2006, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo