iOS--Document路径下存储数据的总结

获取Document的路径的方法有几个,下面我来说一下我的做法

// fileName就是保存文件的文件名

NSUserDefaults*userdefault = [NSUserDefaults standardUserDefaults];

//找到Documents文件所在的路径

NSArray*path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString*filePath = [pathobjectAtIndex:0];

这个filePath就能获取到Document的文件夹下了,之后再根据自己的需求,拼接不同的文件路径。

接下来便是关于存储数据,不管是NSArray,NSDirectory,NSData,或者其他数据。

这些数据类型都是能够存储,存储接口是[class  writeToFile:(文件路径)   atomically:YES];

获取文件也很简单,NSArray---->arrayWithContentsOfFile

NSData---->dataWithContentsOfFile;NSDirectory---->directoryWithContentsOfFile

**********

以上都是耳熟能详的,上网或者基本上书籍中都会提到的。

下面我来说一下我遇到的问题,我的项目需求是在拍照时,随时上传图片,如果上传图片过程中出现网络中断、不稳定、或者网速不给力,这样导致上传图片失败的,要求把失败的图片存储本地,在网络稳定重新启动应用时,遍历路径下的文件,再次上传图片!!

原先以为比较简单,上面的nsdata类的存储获取接口一调就完事,但是现实啪啪打脸。出现存储文件成功,我把多个文件路径放在NSArray中存入本地Document中。但是在应用重新启动拿到文件路径,要获取图片数据时,NSFileManager检测路径下文件根本不存在!

多次测试发现问题所在,那就是上述能获取到Document文件夹的filePath每次都是在变化的,而我在存储的路径当时的完整路径,如下

/var/mobile/Containers/Data/Application/2BE22D43-4A6C-42EE-892F-107E508E6540/Documents/20170705145022007.jpg

其中2BE22D43-4A6C-42EE-892F-107E508E6540这段序列每次都在变化

遇到这样存储本地数据的问题,只把文件名也就是20170705145022007.jpg存储在NSArray中,获取数据时重新调用Document路径拼接,这样便能成功拿到数据!

你可能感兴趣的:(iOS--Document路径下存储数据的总结)