zoukankan      html  css  js  c++  java
  • ios 清空全部key chain以及userDefaults相关

    清空相关信息,再构造唯一id等可做一键新机

    清空全部key chain

    + (void)clearKeyChain {
        NSMutableDictionary *query = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                      (__bridge id)kCFBooleanTrue, (__bridge id)kSecReturnAttributes,
                                      (__bridge id)kSecMatchLimitAll, (__bridge id)kSecMatchLimit,
                                      nil];
        NSArray *secItemClasses = [NSArray arrayWithObjects:
                                   (__bridge id)kSecClassGenericPassword,
                                   (__bridge id)kSecClassInternetPassword,
                                   (__bridge id)kSecClassCertificate,
                                   (__bridge id)kSecClassKey,
                                   (__bridge id)kSecClassIdentity,
                                   nil];
        for (id secItemClass in secItemClasses) {
            NSLog(@"secItemClass %@",secItemClass);
            [query setObject:secItemClass forKey:(__bridge id)kSecClass];
            
            CFTypeRef result = NULL;
            SecItemCopyMatching((__bridge CFDictionaryRef)query, &result);
            if (result != NULL) CFRelease(result);
    
            NSDictionary *spec = @{(__bridge id)kSecClass: secItemClass};
            SecItemDelete((__bridge CFDictionaryRef)spec);
        }
    }
    

      清空 userDefaults 用户相关

    + (void)clearUserDefaults {
        NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
        [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
        [[NSUserDefaults standardUserDefaults] synchronize];
        
        NSString *path = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject;
        path = [path stringByAppendingPathComponent:@"Preferences"];
        NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
        
        for (NSString * filename in fileList) {
            NSString *filepath = [path stringByAppendingPathComponent:filename];
            BOOL isDir = NO;
            [[NSFileManager defaultManager] fileExistsAtPath:filepath isDirectory:(&isDir)];
            if (!isDir && [filename hasSuffix:@".plist"] && (![filename isEqualToString:appDomain])) {
                NSString *suitename = [filename stringByDeletingPathExtension];
                NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:suitename];
                [userDefaults removePersistentDomainForName:suitename];
                [[NSFileManager defaultManager] removeItemAtPath:filepath error:nil];
            }
        }
    }
    本文章仅供学习参考,如有版权侵犯,请联系作者修改,转载请注明出处!
  • 相关阅读:
    GIT的使用
    工具函数:cookie的添加、获取、删除
    技术分布特点:枣核型与网状结构
    js基础知识:表达式
    js基础知识:变量
    解决ie8(及其以下)不支持getElementsByClassName的问题
    毕设进度(10.29)
    毕设进度(10.28)
    毕设进度(10.27)
    毕设进度(10.26)
  • 原文地址:https://www.cnblogs.com/HugJun/p/15774276.html
Copyright © 2011-2022 走看看