Déterminer le type de données cachées dans un NSData

ClicCoolClicCool Membre
08:31 modifié dans API AppKit #1
Bonjour à  tous

Y a-t-il un moyen de déterminer (à  la louche éventuellement ;) ) le type de données hébergées par un NSData ?

Je m'explique:
Avec Lauris, nous essayons de réfléchir à  une sorte de couteau suisse des bases sql qui proposerait un objet d'édition adapté selon le type de données récupérées depuis sql.
Par exemple une NSTextView pour l'édition de textes ou une NSImageView pour les images etc...
Le pb c'est que pour sql il semble que les champs de type text (tinyText mediumText ou text) soient identiques aux champs blob (tinyBlob, mediumBlob ou Blob). le type renvoyé est toujours blob.
Et même pour un blob donné, comment savoir s'il s'agit d'une image ou d'un son ou une vidéo etc... ?
Bref je souhaiterai éviter au maximum d'avoir à  demander à  l'utilisateur quel type de données tel champ contient ... et au moins être capable d'identifier des données de type NSData en provenance d'une appli cocoa ...
Faut-il adresser "à  l'aveugle" les datas dans un conteneur au hazard et essayer de détecter une erreur avant de passer alors à  un conteneur de type différent ? ???
Quelqu'un a une piste ?  :-\

Réponses

  • BruBru Membre
    08:31 modifié #2
    La plupart des grands types de données ont généralement en entête de fichier un marqueur déterminant son type...

    Par exemple, une image GIF commence toujours par les caractères "GIF87a" ou "GIF89a", donc en analysant les x premiers octets de la NSData, tu peux "deviner" approximativement le type de donnée stockée.

    .
  • mpergandmpergand Membre
    08:31 modifié #3
    Une solution serait d'utiliser Quicktime GraphicsImporter, cela permettrait d'identifier tous les types de données supportés par Quicktime.
  • ClicCoolClicCool Membre
    08:31 modifié #4
    Désolé mais mon vrai boulot me mange tout mon empoi du temps en ce moment :( ;)

    dans 1099556722:

    La plupart des grands types de données ont généralement en entête de fichier un marqueur déterminant son type...

    Par exemple, une image GIF commence toujours par les caractères "GIF87a" ou "GIF89a", donc en analysant les x premiers octets de la NSData, tu peux "deviner" approximativement le type de donnée stockée.


    ah ben oui ! merci Bru,
    dans pas mal de cas les premiers octets d'un data sont une signature en effet.
    pour un NSData issu d'un NSTextView il semble que ce soit "\rtf1\mac\ansi...".
    OK je planche là  dessus, de toutes façon ça ne peut qu'être instructif à  défaut d'être productif ;)

    Merci, aussi à  toi mpergan ;)

    J'ai l'impression d'avoir eu les yeux plus gros que le ventre tellements les possibilités sont nombreuses. Va surement faloir se résoudre à  se limiter aux data les plus courantes :(
  • nucleusnucleus Membre
    08:31 modifié #5
    Ca peut être interessant de regarder aussi la commande 'file' et son fichier '/etc/magic'

    J'ai pas eut l'occasion de vérifier si cette commande existait sur OS X ou Fink, mais son but c'est d'identifier le type de fichier par son contenu..
Connectez-vous ou Inscrivez-vous pour répondre.