我有一个使用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中,但是收件箱中的文件似乎是"文件"而不是目录。
发生了什么事。电子邮件是否会以某种方式自动拉链?
答案 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....
}
}