2017-04-11 6 views
0

CoreData에서 데이터를로드하는 UITableView이 있습니다. 테이블에서 레코드를 삭제하도록 선택하면 다음을 사용합니다.alertView에 NSIndexPath 전달 clickedButtonAtIndex

[self.managedObjectContext deleteObject:[self.recordList objectAtIndex:indexPath.row]]; 
[self.managedObjectContext save:nil]; 
[self.tableViewSavedRecords reloadData]; 

모든 레코드가 삭제되고 테이블이 다시로드됩니다.

그러나 일부 레코드는 암호로 보호하고 이러한 기록이 삭제 선택할 때 경고가 암호를 물어 나타납니다

NSString *enteredPassword = [[alertView textFieldAtIndex:0] text]; 

if ([enteredPassword isEqualToString: savedPassword]) { 
    [self.managedObjectContext deleteObject:[self.recordList objectAtIndex:indexPath.row]]; 
    [self.managedObjectContext save:nil]; 
    [self.tableViewSavedRecords reloadData]; 
} 
문제는 objectAtIndex:indexPath.row입니다

은 다음과 같습니다 (가) alertView clickedButtonAtIndex

UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"Warning" message: @"This record has been password protected.\nEnter password." delegate: self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 
alert.alertViewStyle = UIAlertViewStyleSecureTextInput; 
[alert show]; 

분명히 alertView clickedButtonAtIndex 섹션에서 인식되지 않습니다. NSIndexPathalertView clickedButtonAtIndex에 전달하려면 어떻게해야하나요?

나는 선언 시도 :

NSIndexPath *selectedIndexPath; 

그런 경고는 내가 포함 한 트리거되는 경우 : AlertView 클릭 수에 그런

selectedIndexPath = [tableViewPausedObs indexPathForSelectedRow]; 

을 :

[self.managedObjectContext deleteObject: selectedIndexPath.row]; 
[self.managedObjectContext save:nil]; 

을하지만이 삭제 선택한 행이 아닌 테이블의 첫 번째 행

+0

처럼 선택된 행의 NSIndexPath를 얻을 수있는'UIAlertView'은 몇 년 동안 사용되지 않습니다. 'UIAlertController'를 사용하십시오. 이것은 블록 기반이며 인덱스 경로를 캡쳐 할 수 있습니다. – vadian

답변

1

당신은 어느 곳이

NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow]; 
+0

감사합니다. 나는 이것을 시도했으나 'NSManagedObject * _Nonnull'+ 매개 변수에 'NSIndexPath * _Nullable'을 보내는 호환되지 않는 포인터 유형을 경고합니다. 코드를 실행하면 NSIndexParth가 0이되어 충돌이 발생합니다. 업데이트를 참조하십시오. – RGriffiths

+0

이'[self.managedObjectContext deleteObject : [self.recordList objectAtIndex : selectedIndexPath.row]];'를 변경 했습니까? –

+0

다시 감사합니다. 나는 경고를 없애는 .row를 추가하지 않았다. 그러나 선택한 행을 선택하지 않고 매번 첫 번째 행을 삭제합니다. – RGriffiths