//寫入
- (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];
}