//
//  PYHDocument.m
//  superCleaner
//
//  Created by GY.Z on 2020/7/6.
//  Copyright © 2020 Mazy. All rights reserved.
//

#import "PYHDocument.h"

@interface PYHDocument ()
//存储空间地址
@property (nonatomic, strong) NSURL *container;

@end

@implementation PYHDocument

- (instancetype)initWithFileURL:(NSURL *)url {
    if (self = [super initWithFileURL:url]) {
        self.container = url;
    }
    return self;
}


- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError * _Nullable __autoreleasing *)outError {
    //提取数据  这里的数据解析和存入数据的时候配套
    NSLog(@"%@-%@",contents,typeName);
    
    //1.根据存入处理 这里得到取出数据格式 严谨一些当然是进行相关判断
    NSFileWrapper *apper = (NSFileWrapper *)contents;
    //2.对数据进行解析
    [apper.fileWrappers enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSFileWrapper * _Nonnull obj, BOOL * _Nonnull stop) {
        NSLog(@"对数据进行解析 = %@-=-=-=-=%@",obj.filename,obj.fileAttributes);
        if (self.delegate && [self.delegate respondsToSelector:@selector(docGetiCloudContactsMethods:fileInfo:)]) {
            [self.delegate docGetiCloudContactsMethods:obj.regularFileContents fileInfo:obj.fileAttributes];
        }
    }];
    
    return YES;
}

- (id)contentsForType:(NSString *)typeName error:(NSError * _Nullable __autoreleasing *)outError {
    //写入数据
    NSLog(@"写入数据 = %@",typeName);
    
    //1.获取目录
    NSFileWrapper *wrapper = [[NSFileWrapper alloc] initWithURL:self.container options:NSFileWrapperReadingImmediate error:nil];
    //1-1.目录获取失败 证明没有指定目录 那么创建一个
    if (!wrapper) {
        wrapper = [[NSFileWrapper alloc]initDirectoryWithFileWrappers:@{}];
    }
    
    //2.配置储存文档及文档名
    if (self.saveData && self.saveFileName) {
        //这里遇到的问题是重复文件不会覆盖，然后系统进行了文件名的处理。使目录中，存入了同样的数据。
        NSFileWrapper *preWrapper = [wrapper.fileWrappers objectForKey:self.saveFileName];
        if (preWrapper) {
            [wrapper removeFileWrapper:preWrapper];
        }

        NSFileWrapper *dataWrapper = [[NSFileWrapper alloc] initRegularFileWithContents:self.saveData];
        dataWrapper.preferredFilename = self.saveFileName;
        [wrapper addFileWrapper:dataWrapper];
    }
    
    return wrapper;
}

@end
