plist를 사용하는 tableView를 사용하여 몇 가지 confing 설정을합니다. 데이터를 채우기 위해 파일이 코드를 2 주 정도 작업하고 있습니다.이 코드가 작동하는 것 같습니다.plist에 문자열 바꾸기
이 내 코드입니다 :
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
if ([[[week objectAtIndex:indexPath.row] objectForKey:@"checkmark"] isEqual:@"0"]) {
[selectedCell setAccessoryType:UITableViewCellAccessoryCheckmark];
[[week objectAtIndex:indexPath.row] setObject:@"1" forKey:@"checkmark"];
}
else {
[selectedCell setAccessoryType:UITableViewCellAccessoryNone];
[[week objectAtIndex:indexPath.row] setObject:@"0" forKey:@"checkmark"];
}
[[week objectAtIndex:indexPath.row] writeToFile:@"week.plist" atomically:YES];
NSLog(@"%@, %@", selectedCell.textLabel.text,[[week objectAtIndex:indexPath.row] objectForKey:@"checkmark"]);
NSLog(@"Array de week seleccionando %@", week);
}
모든 것이 (내가 nslogs을 사용하여 그 이유는)이 debbug 지역에서 잘 작동하는 것 같다, 내 문제는 즉, PLIST 파일에 변경 내용을 저장할 수 없습니다이다, 어떤 종류의 캐시 또는 그런 식으로 저장하는 것 같습니다.
업데이트
나는이 코드를 시도했다 :
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"week.plist"];
NSDictionary *plistDict = [NSDictionary dictionaryWithObjects:week forKeys:week];
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict
format:NSPropertyListXMLFormat_v1_0
errorDescription:nil];
if ([[[week objectAtIndex:indexPath.row] objectForKey:@"checkmark"] isEqual:@"0"]) {
[selectedCell setAccessoryType:UITableViewCellAccessoryCheckmark];
NSString *uno = @"1";
[[week objectAtIndex:indexPath.row] setObject:uno forKey:@"checkmark"];
}
else if ([[[week objectAtIndex:indexPath.row] objectForKey:@"checkmark"] isEqual:@"1"]) {
[selectedCell setAccessoryType:UITableViewCellAccessoryNone];
NSString *cero = @"0";
[plistData writeToFile:plistPath atomically:YES];
}
[[week objectAtIndex:indexPath.row] setObject:cero forKey:@"checkmarck"];
NSLog(@"%@, %@", selectedCell.textLabel.text,[[week objectAtIndex:indexPath.row] objectForKey:@"checkmark"]);
NSLog(@"Array de checkmarks %@", week);
}
내가 디버그 지역에서 동일한 결과를 있었다 :
2014-07-07 22:11:21.384 experiment table view[2264:60b] Thursday, 0
2014-07-07 22:11:21.385 experiment table view[2264:60b] Array de week seleccionando (
{
Name = Sunday;
checkmarck = 0;
},
{
Name = Monday;
checkmarck = 1;
},
{
Name = Tuesday;
checkmarck = 0;
},
{
Name = Wednesday;
checkmarck = 0;
},
{
Name = Thursday;
checkmarck = 0;
},
{
Name = Friday;
checkmarck = 1;
},
{
Name = Saturday;
checkmarck = 0;
}
)
동일 결과가
'writeToFile :'메소드는 파일 이름뿐만 아니라 전체 경로가 필요합니다. 쓰기 가능한 경로에 글을 쓰고 있는지 확인하십시오. 앱 번들은 쓰기 가능하지 않습니다. – rmaddy