你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 關於本地持久化存儲的探討

iOS 關於本地持久化存儲的探討

編輯:IOS開發綜合
目前,用以本地化存儲的方式有很多,常用的有以下:   1.臨時緩存   先說說臨時緩存,臨時緩存一般相當於用來管理應用程序中全局需要常用的一些內容。比如當前用戶的ID或者當前的定位信息等。   常用的方式就是寫一個靜態變量,然後使用類方法調用。(或者單例類也行)   static NSMutableDictionary *_cacheDic;    
#pragma mark - 字段持久緩存(保存在數據庫)
+(NSString *)storeValueForKey:(SCStoreKey)key{
    return [[NSUserDefaults standardUserDefaults] valueForKey:[@(key) stringValue]];
}

+(void)setStoreValue:(NSString *)value forKey:(SCStoreKey)key{
    [[NSUserDefaults standardUserDefaults] setObject:value forKey:[@(key) stringValue]];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

+(void)deleteStoreValueForKey:(SCStoreKey)key{
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:[@(key) stringValue]];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

 

  2.本地存儲NSUserdefaults,按KV存儲,重啟後還會存在。缺點1:只能存儲NSString內容,缺點2:刪除APP後會消失    
#pragma mark - 字段持久緩存(保存在數據庫)
+(NSString *)storeValueForKey:(SCStoreKey)key{
    return [[NSUserDefaults standardUserDefaults] valueForKey:[@(key) stringValue]];
}

+(void)setStoreValue:(NSString *)value forKey:(SCStoreKey)key{
    [[NSUserDefaults standardUserDefaults] setObject:value forKey:[@(key) stringValue]];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

+(void)deleteStoreValueForKey:(SCStoreKey)key{
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:[@(key) stringValue]];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

 

    3.NSKeyedArchiver(歸檔),可存儲自定義對象。缺點:刪除APP後會消失。    
#pragma mark - 對象持久緩存(保存在本地文件)
+(void)setStoreObject:(NSObject<NSCoding> *)obj forKey:(SCObjectKey)key{
    NSString *path=[SCSysconfig filePathByName:[NSString stringWithFormat:@"%d.domain",key]];
    [NSKeyedArchiver archiveRootObject:obj toFile:path];
}

+(NSObject<NSCoding> *)storeObjectForKey:(SCObjectKey)key{
    NSString *path=[SCSysconfig filePathByName:[NSString stringWithFormat:@"%d.domain",key]];
    NSObject<NSCoding> *obj=[NSKeyedUnarchiver unarchiveObjectWithFile:path];
    return obj;
}

+(void)deleteStoreObjectForKey:(SCObjectKey)key{
    NSString *path=[SCSysconfig filePathByName:[NSString stringWithFormat:@"%d.domain",key]];
    [SCFileOper removeFile:path];
}

 

    4.KeyChain的使用,刪除APP後,重新安裝還存在。(只要BoundleID一致)   Keychain即鑰匙串,是用以在應用刪除後還可以保存數據的一種方法。它的存儲和應用的BoundleID有關。比如百度貼吧就實現了在應用刪除後,再重新安裝,如果Token還是有效的話,無需再登陸。
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved