一开始我用的方法一写,但是后来发现在高系统上报错(大概报错内容:NSCocoaErrorDomain:257)。
创新互联成都网站建设按需制作网站,是成都网站设计公司,为混凝土搅拌站提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站营销推广热线:028-86922220
后来解决了,做个记录。
1、在低于iOS13的系统中。用创建文件夹的形式可以如下:
+ (NSString *)tmpLogPath
{
NSString *docPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library"];
NSString *dirPath = [docPath stringByAppendingPathComponent:@"mylog"];
NSString *filePath = [dirPath stringByAppendingPathComponent:@"tmpLog.txt"];
return filePath;
}
+ (void)writeTmpLog:(NSString *)aMsg
{
NSString *filePath = [[self class] tmpLogPath];
if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
BOOL isDir = NO;
BOOL hasDir = [[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:isDir];
if (!hasDir || !isDir) {
[[NSFileManager defaultManager] createDirectoryAtPath:filePath withIntermediateDirectories:NO attributes:nil error:nil];
}
}
NSError *error;
NSString *content =[NSString stringWithContentsOfFile:filePath
encoding:NSUTF8StringEncoding
error:error];
NSString *newContent = [NSString stringWithFormat:@"%@\n%@",content,aMsg];
[newContent writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
}
+ (void)clearTmpLog
{
NSString *filePath = [[self class] tmpLogPath];
[@"" writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
}
2、但是在iOS13上,不能这样写。系统会默认创建以为***.txt的文件夹,在写入的时候就出问题了。
会报错:NSCocoaErrorDomain:257 就是
NSFileReadNoPermissionError = 257,/ /读取错误(权限问题)
所以可以这样写:
+ (NSString *)tmpLogPath {
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [documentPath stringByAppendingPathComponent:@"mylog/tmpLog.txt"];
returnfilePath;
}
+ (void)writeTmpLog:(NSString*)aMsg {
NSString*fieldPath = [[self class]tmpLogPath];
NSLog(@"当前文件大小:%llu",[self fileSizeWithPath:fieldPath]);
NSFileManager *manager = [NSFileManager defaultManager];
if(![managerfileExistsAtPath:fieldPath]){
NSError*error;
[aMsgwriteToFile:fieldPath atomically:YES encoding:NSUTF8StringEncoding error:error];
if(error) {
NSLog(@"写入失败:%@\n",[error localizedDescription]);
}
}else{
NSError*error;
NSError*writeError;
NSString *content =[NSString stringWithContentsOfFile:fieldPath
encoding:NSUTF8StringEncoding
error:error];
if(error) {
NSLog(@"读取失败:%@\n",[error localizedDescription]);
}
NSString*newContent = [NSString stringWithFormat:@"%@\n%@",content,aMsg];
[newContentwriteToFile:fieldPath atomically:YES encoding:NSUTF8StringEncoding error:writeError];
if(writeError) {
NSLog(@"写入失败:%@\n",[writeErrorlocalizedDescription]);
}
}
}
//获取文件大小
+ (unsignedlonglong)fileSizeWithPath:(NSString*)path {
signedlonglongfileSize =0;
NSFileManager *fileManager = [NSFileManager defaultManager];
if([fileManagerfileExistsAtPath:path]) {
NSError*error =nil;
NSDictionary*fileDict = [fileManagerattributesOfItemAtPath:patherror:error];
if(!error fileDict) {
fileSize = [fileDictfileSize];
}
}
returnfileSize;
}
+ (void)clearTmpLog {
NSError*error;
NSFileManager *manager = [NSFileManager defaultManager];
NSString*filePath = [[selfclass]tmpLogPath];
[managerremoveItemAtPath:filePatherror:error];
if(error) {
NSLog(@"删除失败:%@\n",[error localizedDescription]);
}
}
证书文件:
1.CSR文件:证书请求文件,从钥匙串工具颁发(一个开发者账号享有一份)
2.开发者开发用签名文件:是开发者开发身份识别文件,苹果后台申请(一个开发者账号享有一份)
3.开发者发布用签名文件:是开发者发布身份识别文件,苹果后台申请(一个开发者账号享有一份)
4.开发用推送证书(每个应用一份)
5.发布用推送证书(每个应用一份)
6.开发调试配置文件(每个应用一份)
7.adhoc配置文件(每个应用一份)
8.发布配置文件(每个应用一份)。
就这些望采纳
这里有一点需要注意:
命名的时候不能用Info.plist , INfo.plist, xxxInfo.plist等形式,否则会与系统中存在的Info.plist文件发生冲突。
点击Root这一行,然后通过点击右键-Add Row或者点击Root后面的加号来增加一行。
这一行中包含三个属性,key、type、value。其中key是字段属性,type是字段类型,value是字段对应的值。
Type包含7中类型,对写入的数据结构应属于7仲:
(NSString,NSData,NSDate,NSNumber,NSArray,NSDictionary)
读取数据
文件是什么类型,就用什么类型的数据来接收
参考文档1: iOS开发,plist文件读写那些事
参考文档2: iOS开发中怎么创建Plist文件
参考文档3: 【iOS】plist无法写入的原因
参考文档4: plist 文件写入与读取
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款