plist文件操作
?
?
//寫入
- (void)writePlist :(NSString *)name :(NSString *)password
{
? ? //取得檔案路徑
? ? NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
? ? NSString *documentsDirectory = [paths objectAtIndex:0];
? ? //documentsDirectory為路徑,可健入以下程式碼以顯示其路徑資訊
? ? //NSLog(@"%@", documentsDirectory);
?
? ? //在Finder中顯示隐藏文件
? ? //打開終端機輸入
? ? //defaults write com.apple.finder AppleShowAllFiles -bool true
? ? //KillAll Finder
? ? //相反
? ? //defaults write com.apple.finder AppleShowAllFiles -bool false
? ? //KillAll Finder
?
? ? //plist命名
? ? NSString *filePath = [documentsDirectory stringByAppendingString:@"/data.plist"];
? ? NSFileManager *fileManager = [NSFileManager defaultManager];
? ? NSMutableDictionary *plistDict;
?
? ? //檢查檔案是否存在,return false則創建
? ? if ([fileManager fileExistsAtPath: filePath])
? ? {
? ? ? ? plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
? ? }else{
? ? ? ? plistDict = [[NSMutableDictionary alloc] init];
? ? }
?
? ? //先查看是否已有obj在plist內
? ? if ([plistDict objectForKey:name])
? ? {
? ? ? ? newUserLabel.text = [NSString stringWithFormat:@"%@ is already in list", name];
? ? }
? ? else
? ? {
? ? ? ? //向動態字典追加參數
? ? ? ? [plistDict setObject:password forKey:name];
? ? ? ? //把剛追加之參數寫入file
? ? ? ? if ([plistDict writeToFile:filePath atomically: YES]) {
? ? ? ? ? ? newUserLabel.text = [NSString stringWithFormat:@"User %@ create success!", name];
? ? ? ? ? ? NSLog(@"writePlist success");
? ? ? ? } else {
? ? ? ? ? ? NSLog(@"writePlist fail");
? ? ? ? }
? ? }
? ? //釋放記憶體
? ? [plistDict release];
}
?
//讀取
- (void)readPlist :(NSString *)name :(NSString *)password
{
? ? NSString *checkPassword;
?
? ? //取得檔案路徑
? ? NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
? ? NSString *documentsDirectory = [paths objectAtIndex:0];
? ? NSString *filePath = [documentsDirectory stringByAppendingString:@"/data.plist"];
? ? NSFileManager *fileManager = [NSFileManager defaultManager];
? ? NSMutableDictionary *plistDict;
? ? //檢查檔案是否存在
? ? if ([fileManager fileExistsAtPath: filePath])
? ? {
? ? ? ? NSLog(@"File here.");
? ? ? ? //存在的話把plist中的資料取出並寫入動態字典plistDict
? ? ? ? plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
? ? }else{
? ? ? ? NSLog(@"File not here.");
? ? ? ? plistDict = [[NSMutableDictionary alloc] init];
? ? }
?
? ? //使用objectForKey以關鍵字取得其value
? ? checkPassword = [plistDict objectForKey:name];
?
? ? //使用isEqualToString比對輸入
? ? if ([checkPassword isEqualToString:password])
? ? {
? ? ? ? loginLabel.text = [NSString stringWithFormat:@"%@ login ok!", name];
? ? }
? ? else
? ? {
? ? ? ? loginLabel.text = [NSString stringWithFormat:@"登入名稱或密碼錯誤!"];?
? ? }
? ? [plistDict release];
}