保存为包(带有filewrappers)和icloud驱动器的文件,它们是否通过电子邮件压缩?

时间:2016-09-25 12:24:40

标签: swift icloud uidocument uti

我有一个使用UIDocument并使用filewrappers写入数据的应用程序:

import java.util.Scanner;
public class Testing {

    static final char[] LETRAS = {'T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X'
                                 ,'B', 'N',  'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C'
                                 , 'K', 'E'};
    String input;
    public boolean status = false;
    Scanner scanner = new Scanner(System.in);

 //Método problema general
public static void main (String[] args) {
Testing programa = new Testing();
programa.inicio();
}

public void inicio() {
    Intro();
    while (!status){
    datosUsuario();
    comprobacion();
    resultado();
}
}

//Explicar programa
public void Intro() {
    System.out.println("¡Hola!\nEste programa pide y comprueba DNI's."
            + "A continuación va a pedir un DNI de forma 8 dígitos y una letra,"
            + "y va a comprobar si es válido.\n"
            + "Ejemplo DNI válido: 24659213Q\n\n");
}

//Métodos primer nivel de decomposición
//Pedir DNI por teclado
public void datosUsuario() {
    System.out.print("Escribe DNI: ");
    input = scanner.nextLine();
}


//Comprobación DNI
public boolean comprobacion() {
    System.out.println("Comprobamos DNI...");
    char letra = input.charAt(8);
    if(input.matches("[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKEtrwagmyfpdxbnjzsqvhlcke]{1}"))
    {
        int numeros = Integer.parseInt(input.replaceAll("[^0-9]", ""));
        if(LETRAS[numeros%LETRAS.length] == input.charAt(8)) {
            return true;
        }
    }
    return false;
}

//Mostrar resultado
public void resultado() {
    if(status&&comprobacion()){
        System.out.println("DNI válido!");
    }
}
}

这实际上很好用。我也在我的plist中有文件的用户。该文档可以保存,复制到icloud驱动器,导回到应用程序,到目前为止很好....

但现在困难的部分:Icloud驱动器有一个电子邮件按钮。如果我通过该按钮将工作文件发送给自己,并将文件保存在Mac上,则右键菜单选项"显示包装内容"离开了。 (虽然它存在于icloud驱动器中的相同文件)。

此外,如果我尝试在iphone上打开此邮件附件,我的应用程序无法在包装文件中找到子路径。 (所以我的文件名为bla.myextension,元数据应该在bla.myextension / meta.xml中,但是收件箱中的文件似乎是"文件"而不是目录。

发生了什么事。电子邮件是否会以某种方式自动拉链?

1 个答案:

答案 0 :(得分:2)

文件确实是自动压缩的。所以在application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:])中只需检查结果是否是目录,因为从icloud驱动器打开可能会给你解压缩的结果。如果它是一个目录,那么你必须自己解压缩它。

            var isDir : ObjCBool = ObjCBool( false)
            if fileManager.fileExists(atPath: url.path, isDirectory: &isDir) {
                if isDir.boolValue {
                    ...copy directory...
                }
                else {
                    ...unzip and copy....
                }

            }