2010-05-23 3 views
0

기본 사진 앨범 응용 프로그램이 있습니다. 첫 번째보기에는 각 앨범에있는 이미지의 수를 보여주는 자막이있는 앨범 목록이 표시됩니다. 앨범을 추가하고 앨범에 이미지를 추가하는 데 필요한 모든 작업이 있습니다. 문제는 앱이로드 될 때마다 이미지 개수가 정확하지만 실행 중에 업데이트 할 수 없다는 것입니다. 내가 viewdidappear 내에서 유사한 코드를 실행할 때데이터가 마이너 업데이트의 핵심 데이터에서 tableview로 다시로드되지 않습니다.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Set the title. 
    self.title = @"Photo albums"; 

    // Configure the add and edit buttons. 
    self.navigationItem.leftBarButtonItem = self.editButtonItem; 

    addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addAlbum)]; 
    addButton.enabled = YES; 
    self.navigationItem.rightBarButtonItem = addButton; 

    /* 
    Fetch existing albums. 
    Create a fetch request; find the Album entity and assign it to the request; add a sort descriptor; then execute the fetch. 
    */ 
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Album" inManagedObjectContext:managedObjectContext]; 
    [request setEntity:entity]; 

    // Order the albums by name. 
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"albumName" ascending:NO]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
    [request setSortDescriptors:sortDescriptors]; 
    [sortDescriptor release]; 
    [sortDescriptors release]; 

    // Execute the fetch -- create a mutable copy of the result. 
    NSError *error = nil; 
    NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy]; 
    if (mutableFetchResults == nil) { 
     // Handle the error. 
    } 

    LocationsAppDelegate *mainDelegate = (LocationsAppDelegate *)[[UIApplication sharedApplication] delegate]; 

    // Set master albums array to the mutable array, then clean up. 
    [mainDelegate setAlbumsArray:mutableFetchResults]; 
    [mutableFetchResults release]; 
    [request release]; 
} 

그러나, 아무 일도 발생하지 :

{ 
    /* 
    Fetch existing albums. 
    Create a fetch request; find the Album entity and assign it to the request; add a sort descriptor; then execute the fetch. 
    */ 
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Album" inManagedObjectContext:managedObjectContext]; 
    [request setEntity:entity]; 

    // Order the albums by creation date, most recent first. 
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"albumName" ascending:NO]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
    [request setSortDescriptors:sortDescriptors]; 
    [sortDescriptor release]; 
    [sortDescriptors release]; 

    // Execute the fetch -- create a mutable copy of the result. 
    NSError *error = nil; 
    NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy]; 
    if (mutableFetchResults == nil) { 
     // Handle the error. 
    } 

    LocationsAppDelegate *mainDelegate = (LocationsAppDelegate *)[[UIApplication sharedApplication] delegate]; 

    // Set master albums array to the mutable array, then clean up. 
    [mainDelegate setAlbumsArray:mutableFetchResults]; 
    [self.tableView reloadData]; 
    [mutableFetchResults release]; 
    [request release]; 
} 

사과를 내가 한 경우 응용 프로그램로드시

다음의 viewDidLoad 올바르게있는 tableview의 모든 라인을 채 웁니다 다른 곳에서이 질문에 대한 답을 찾지 못했지만, 무엇이 실종 되었습니까?

답변

2

문제를 해결하려면 문을 -viewDidAppear:에 몇 군데에 입력하십시오. 이 로그 문을 사용하여이 메서드가 제대로 호출되고 있는지 확인하고 적어도 mutableFetchResults의 내용을 검사합니다.

+0

감사합니다. 런타임 중에 데이터를 저장하지 않았기 때문에 종료시 변경 사항 만 저장했습니다. 이제 잘 작동합니다. –

관련 문제