NSString *home = NSHomeDirectory()
2、文檔目錄:documents[0];
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
3、緩存目錄:caches[0]NSArray *caches = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, NO);
4、臨時目錄:tmpDirNSString *tmpDir = NSTemporaryDirectory();
plist的寫入
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *doc = documents[0];
NSString *path = [doc stringByAppendingPathComponent:@"array.plist"];
[array writeToFile:path atomically:YES];
圖片數據的寫日:
NSData *imageData = UIImagePNGRepresentation(image);
// 2. 建立保存文件的路徑
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [documents[0] stringByAppendingPathComponent:@"image.png"];
// 3. 將NSData寫入文件
[imageData writeToFile:path atomically:YES];
注意:info是寫入不了的!info不都是以下數據類型的// 1. 判斷文件是否存在
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [documents[0] stringByAppendingPathComponent:@"image.png"];
// 注意:此處不要使用imageNamed方法,因爲imageNamed方法是從bundle中加載圖像的
UIImage *image = [UIImage imageWithContentsOfFile:path];
// 2. 如果存在加載圖像並且顯示在UIImageView中
if (image != nil) {
[imageView setImage:image];
}
// 歸檔(序列化/編碼)_是在保存數據時使用的
- (void)encodeWithCoder:(NSCoder *)aCoder
// 恢復(反序列化)_是在恢復數據時使用的
- (id)initWithCoder:(NSCoder *)aDecoder
會首先調用被歸檔類對象的encodeWithCoder方法對該對象的屬性編碼,然後再寫入文件進行歸檔
從文件加載數據後,會調用類的initWithCoder方法,實例化該類對象,並恢復屬性
[super encodeWithCoder:aCoder];
確保繼承的實例變量也能被編碼,即也能被歸檔
self = [super initWithCoder:aDecoder];
確保繼承的實例變量也能被解碼,即也能被恢復
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
//TODO:......
// 如果,對於某些需要保存在偏好設置中的數據,要求實時的響應,需要在保存系統偏好設置時,調用一個同步方法
[defaults synchronize];