• Library路径下每次Run都会改变


    问题:在 Xcode 中每次 Run, Library 目录就会改变,就像重新安装了一个 APP 一样?

    // 获取 Library 路径
    NSString *filepath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
        NSLog(@"filePath:%@", filepath);
    
    // 第一次 run ,Library路径
    /Users/renwei/Library/Developer/CoreSimulator/Devices/B1D7EC3E-BE72-4F8D-A4EF-E3D6316827CF/data/Containers/Data/Application/C7E1C3B7-BEC8-4133-A236-8DB0BC074160/Library/
    // 第二次 run ,Library路径
    /Users/renwei/Library/Developer/CoreSimulator/Devices/B1D7EC3E-BE72-4F8D-A4EF-E3D6316827CF/data/Containers/Data/Application/1359ECFE-AFE6-4859-84F9-9539F8FF1866/Library/
    

    疑问:在之前,Xcode 每次运行项目时,Library 下的路径是一样的。而现在路径发生了改变,Library 里保存的数据就会丢失。

    答疑:苹果从安全方面考虑,每次运行会产生一个新的文件夹,会把上一个文件中的数据迁移到新的文件夹中,上一个路径会被苹果毫无保留的删除,只保留新的文件,所以,获取到沙盒路径后,一定不好存在本地或数据库,但并不影响开发和正常使用。

    解决方案:每次获取最新的沙盒路径,然后进行新路径的拼接,获取文件

    // 将以前的路径分解,取得自定义文件夹名,或者文件名,再重新拼路径
    NSArray *pathList = [databasePath componentsSeparatedByString:@"/"]; 
    // 获得新的沙盒路径
    NSArray *directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory = [directoryPaths objectAtIndex:0];
    // 拼新的路径
    NSString *currentImagePath = [documentDirectory stringByAppendingPathComponent:FILE_NAME_ORIGINAL_IMAGE];
    currentImagePath = [currentImagePath stringByAppendingPathComponent:[pathList lastObject]];
    // 取得文件
    NSFileManager *manager = [NSFileManager defaultManager];
    if ([manager fileExistsAtPath:currentImagePath]) {
        NSData *fileData = [manager contentsAtPath:currentImagePath];
        return [UIImage imageWithData:fileData];
    }
    
  • 相关阅读:
    既然来了,就要在这扎根
    vuejs 组件 移动端push 没有渲染页面
    cucumber——BDD的一个自动化测试的副产品
    Spock框架——单元测试框架
    Mockito——用于 Java 开发的模拟测试框架
    TestNG——开源自动化测试框架
    selenium/appium/airtest——UI测试工具
    rest-assured 使用指南——接口测试
    JUnit 4.1——單元測試框架
    二、面向對象(补充)
  • 原文地址:https://www.cnblogs.com/r360/p/15994894.html
Copyright © 2020-2023  润新知