Причина, по которой это не работает, заключается в том, что MagicalRecord автоматически вызовет executeFetch: для вас, таким образом, не позволяя вам установить делегата заранее.
Также, в вашем приложении DidFinishLaunching: метод, вы хотите удалить эти строки:
self.context = [NSManagedObjectContext context];
[NSManagedObjectContext setDefaultContext:self.context];
В этом случае вы НЕ хотите изменять контекст по умолчанию. MagicalRecord обрабатывает вещи для вас, когда вы вызываете setupCoreDataStackWithStoreNamed: ... то есть MOC уже доступен для использования после завершения этого метода, нет необходимости бросать тот, который он создал для вас, и устанавливать контекст по умолчанию для нового экземпляра. в данном конкретном случае.
Нет необходимости также удерживать контекст, если все, что вы делаете, собирается использовать его для передачи одному из методов выборки, предоставляемых MagicalRecord. MagicalRecord создаст один контекст для своего использования (контекст по умолчанию) и просто использует это ...