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];
            }
        }
    }
    本文章仅供学习参考,如有版权侵犯,请联系作者修改,转载请注明出处!
  • 相关阅读:
    Avito Cool Challenge 2018:D. Maximum Distance
    Avito Cool Challenge 2018:C. Colorful Bricks
    Struts2开发基本步骤
    hibernate query.list() 返回的数据类型
    hibernate query.list() 返回的数据类型
    HibernateUtil工具类
    Hibernate实现步骤
    Hibernate实现步骤
    分页关键知识点总结
    详解
  • 原文地址:https://www.cnblogs.com/HugJun/p/15774276.html
Copyright © 2011-2022 走看看