Как сделать так, чтобы яблоки глючили пример "Locations"? - PullRequest
0 голосов
/ 15 января 2010

К сожалению, Apple вообще не тестировал учебник . Демо "Locations" действительно глючит, а кнопка редактирования даже не существует. У меня нет опечатки. Сначала я не копировал и не вставлял, а после этого я также пытался просто скопировать и вставить их вещи. Много соответствующего кода полностью отсутствует.

Они просто делают это из-за того, что загрузили, даже не создавая кнопку редактирования, нигде:

- (void)viewDidLoad {

    [super viewDidLoad];

    // Set the title.
    self.title = @"Locations";

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

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

    // Start the location manager.
    [[self locationManager] startUpdatingLocation];

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

    // Order the events by creation date, most recent first.
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"creationDate" 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.
    }

    // Set self's events array to the mutable array, then clean up.
    [self setEventsArray:mutableFetchResults];
    [mutableFetchResults release];
    [request release];
}

Я прошел весь урок, и он пока работает, за исключением того, что я не могу удалить ячейки, потому что они не получили эту кнопку редактирования прямо здесь.

Я пытался исправить это с помощью этой строки в -viewDidLoad:

// Setup the buttons for the navigation bar
editButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editEvent)];
self.navigationItem.leftBarButtonItem = editButton;

но как теперь должна выглядеть реализация метода editEvent? К сожалению, все это полностью отсутствует в руководстве по основным данным.

1 Ответ

1 голос
/ 15 января 2010

Код Apple в порядке. Хотя editButtonItem является методом экземпляра, а не свойством только для чтения, точечный синтаксис все еще работает (поскольку точечный синтаксис является просто сокращением для вызовов методов - обычно методов доступа).

...