Problème avec UIDocumentPickerViewController
Bonjour à tous et toutes,
Je viens vous réveiller avec une petite question.
Dans mon application iPocket Draw, j'importais des documents avec :
picker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[@"public.data"] inMode:UIDocumentPickerModeImport];
que j'ai voulu modifier pour prendre en compte les mises à jour, de cette façon :
if (@available(macCatalyst 14.0, iOS 14.0, *)) {
picker = [[UIDocumentPickerViewController alloc] initForOpeningContentTypes:@[@"public.data"] asCopy:YES];
} else {
picker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[@"public.data"] inMode:UIDocumentPickerModeImport];
}
Et ça plante sur la ligne ajoutée avec le message :
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString identifier]: unrecognized selector sent to instance 0x104750198'
J'ai essayé de modifier @public.data par l'identifiant de mon Exported Type Identifier mais sans succès.
Des idées ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
La méthode est :
Le paramètre est de type
(NSArray<UTType *> *)
, pas(NSArray<NSString *> *)
Le code interne s'attend donc à des éléments
UTType
, qui ont une propertyidentifier
. Donc il devrait faire pour chacun des contentTypes:[aContentType identifier]
, or tu as mis aNSString
, donc c'est[aString identifier]
et tu as ton erreur...Donc, il y a sûrement une des méthodes qui va bien dans
UTType
pour que ça s'initialize avec unNSString
.Merci Larme !
J'essaie donc d'utiliser :
[UTType exportedTypeWithIdentifier:
mais j'ai une erreur :
Class method '+exportedTypeWithIdentifier:conformingToType:' not found (return type defaults to 'id')
Receiver 'UTType' is a forward class and corresponding @interface may not exist
Je suppose que je dois déclarer que j'utilise UTType mais je n'ai pas trouvé comment...
J'avance.
J'ai ajouté :
#import <UniformTypeIdentifiers/UTDefines.h>
#import <UniformTypeIdentifiers/UTType.h>
mais j'ai maintenant une erreur :
Undefined symbol: _OBJC_CLASS_$_UTType
Oups, non !
J'avais essayé un ou deux autres mais pas vu celui-là.
En choix, il y a : "Do Not Embed", "Embed & Sign" ou "Embed without Signing" ?
Tous les autres sont : "Do Not Embed".
Merci Larme.