main
#import <Foundation/Foundation.h>
#import "YTDog.h"
#define PATH @"/Users/yuting/Desktop/授課/CD1601/OC階段/day5-歸檔和解歸檔/Plist1.plist"
#define PATH2 @"/Users/yuting/Desktop/授課/CD1601/OC階段/day5-歸檔和解歸檔/data.plist"
#define PATH3 @"/Users/yuting/Desktop/授課/CD1601/OC階段/day5-歸檔和解歸檔/Plist2.plist"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//plist文件只能存儲NSString、NSData、NSDate糠悼、NSNumber、BOOL、NSArray(NSMutableArray)宠蚂、NSDictionary(NSMutableDictionary)乓土,其他類創(chuàng)建的對象都沒有辦法存儲
//===========創(chuàng)建plist文件(往plist文件中寫數(shù)據(jù))==========
//1.先創(chuàng)建一個數(shù)組或者字典(數(shù)組的數(shù)組元素和字典的鍵值對的值都只能上訴plist文件能夠存儲的類型)
NSDate * date = [NSDate date]; //獲取系統(tǒng)當(dāng)前時間
NSArray * array = @[@"哈哈",date,@1000,@NO];
//2.將數(shù)組寫入plist文件中(如果這個文件不存在會創(chuàng)建這個plist文件;如果這個plist文件已經(jīng)存在似枕,會修改plist文件的內(nèi)容)
//參數(shù)1:文件路徑(只能是plist文件的文件路徑)
//參數(shù)2:是否是原子操作(是否支持線程安全)
[array writeToFile:PATH atomically:NO];
//3.將字典寫入plist文件中
NSDictionary * dict = @{@"11":@"abc", @"22":date, @"33":array, @"44":@123.321};
[dict writeToFile:PATH atomically:NO];
//============將plist文件中的內(nèi)容讀取出來=============
//如果想要將plist文件內(nèi)容讀出來盖淡,必須知道plist文件的最外層結(jié)構(gòu)
//最外層是字典
NSDictionary * dict2 = [[NSDictionary alloc] initWithContentsOfFile:PATH2];
//拿到字典中的數(shù)組
NSArray * tarray = dict2[@"333"];
NSString * name = tarray[0];
NSLog(@"name:%@",name);
NSLog(@"%@", dict2);
//最外層是數(shù)組
NSArray * array2 = [NSArray arrayWithContentsOfFile:@"/Users/yuting/Desktop/授課/CD1601/OC階段/day5-歸檔和解歸檔/data1.plist"];
NSLog(@"%@", array2);
//============plist文件不能存儲其他的數(shù)據(jù)類型的對象========
YTDog * dog = [[YTDog alloc] init];
dog.name = @"大黃";
//如果數(shù)組或字典中出現(xiàn)了plist文件不能存儲的類型的對象,plist文件寫入會失敗
NSArray * array3 = @[@"abcd", @100, dog];
[array3 writeToFile:PATH3 atomically:NO];
}
return 0;
}
.h
main
#import <Foundation/Foundation.h>
@interface YTDog : NSObject
@property(nonatomic, copy) NSString * name;
@end