Estoy usando UIManagedDocument
s para administrar mis archivos en iCloud. Después de configurar la NSMetadataQuery
así:NSMetadataQuery ignorando el paquete de archivos personalizado tipo
iCloudQuery = [[NSMetadataQuery alloc] init];
[iCloudQuery setSearchScopes:
[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];
[iCloudQuery setPredicate:
[NSPredicate predicateWithFormat:@"%K like %@", NSMetadataItemFSNameKey, @"DocumentMetadata.plist"]];
Estoy encontrando un problema curioso - cuando mis documentos se nombran sin una extensión de archivo (por ejemplo @"NewDocument2"
) o una extensión pública como .txt
, la consulta de metadatos encuentra correctamente el DocumentMetadata.plist
archivo. Sin embargo, cuando uso mi extensión de archivo personalizada, la consulta nunca encuentra nada ... no cuando se inicia la consulta, ni cuando agrego un documento nuevo.
Me parece que la consulta está viendo probablemente mi documento con su extensión de archivo personalizado, es no darse cuenta de que es, de hecho, un directorio (un paquete de archivos en todo caso), por lo que no se ve dentro para encontrar el archivo DocumentMetadata.plist
. Sin embargo, he declarado mi UTI personalizada en la aplicación info.plist
.
Quizás he declarado mi UTI incorrectamente? Seguí las pautas de Apple (en Document-Based App Programming Guide for iOS y Uniform Type Identifiers Overview) al crearlo, pero parece que algo anda mal.
Editar: Bajo 'UTI exportado' en el info.plist
, mi tipo se fija para ajustarse a 'com.apple.package'.
Editar: todavía estoy luchando con este problema. Estoy trabajando en esto por ahora al no usar una extensión de archivo.
Al usar la extensión de archivo personalizada, estoy procesando los resultados de la consulta de metadatos de iCloud y el archivo DocumentMetadata.plist
está definitivamente dentro del paquete de archivos, pero la consulta de metadatos no puede verlo. Al enumerar los resultados de la consulta, la siguiente se imprime en el registro:
<iCloud Container URL>/Documents/
<iCloud Container URL>/Documents/New%20Document.spdoc/
<iCloud Container URL>/Documents/New%20Document.spdoc/DocumentMetadata.plist
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/(A%20Document%20Being%20Saved%20By%20<AppName>%202)/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/(A%20Document%20Being%20Saved%20By%20<AppName>)/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/.persistentStore_SUPPORT/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/.persistentStore_SUPPORT/_EXTERNAL_DATA/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/persistentStore
(También hay un montón de archivos en un directorio "CoreDataLogs", sin embargo no les haya mostrado aquí por razones de brevedad).
Solo puedo pensar que este problema tiene que ver con la creación incorrecta de mi paquete de archivos UTI. ¿Alguien más ha utilizado con éxito paquetes de archivos personalizados con iCloud? ¿Es esto un error?
Todavía estoy luchando con el dolor de UIManagedDocument. Esta no es realmente una respuesta, pero es posible que desee considerar almacenar UIManagedDocuments fuera de la carpeta "Documentos". De lo contrario, cuando el usuario vaya a Configuración-> iCloud-> Almacenamiento y respaldo-> Administrar almacenamiento->, verá las entradas de DocumentMetadata.plist. Puse mis documentos en una carpeta separada al mismo nivel que Documentos. Entonces su consulta debería usar NSMetadataQueryUbiquitousDataScope. No estoy seguro si necesitaría una extensión de archivo, o si tiene sentido en este caso. –
Daniel