iOS 5.0 - Передайте NSMutableArray из вспомогательного класса в View Controller - PullRequest
0 голосов
/ 21 марта 2012

У меня есть вспомогательный класс, предназначенный для получения данных из Core Data и передачи их обратно в контроллер представления.Вот код:

View Controller :

@interface AnnouncementsController : UIViewController

@property (nonatomic, retain) NSMutableArray *announcements;

@end

@implementation AnnouncementsController

@synthesize announcements;

- (void)viewDidLoad
{
    AnnouncementCoreDataHelper *announcementHelper = [[AnnouncementCoreDataHelper alloc] init];
    self.announcements = [announcementHelper selectAnnouncementsWithPredicate:@"isActive = 1" sortDescriptor:@"lastUpdated" sortAscending:NO];

    [super viewDidLoad];
}

@end

И Core Data Helper реализация:

// Select one or more announcements based on a predicate if passed in and a sort order
- (NSMutableArray*)selectAnnouncementsWithPredicate:(NSString *)predicateString sortDescriptor:(NSString *)sortBy sortAscending:(BOOL)isAscending
{
    NSError *error = nil;

    // Build the entity and request
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Announcement" inManagedObjectContext:managedObjectContext];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entity];

    if(predicateString)
    {
        // Set the search criteria
        NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateString];
        [request setPredicate:predicate];
    }

    if(sortBy)
    {
        NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortBy ascending:isAscending];
        NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
        [request setSortDescriptors:sortDescriptors];
    }

    // Perform the search
    NSMutableArray *results = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];

    if(results == Nil)
    {
        NSLog(@"%@", error);
    }

    return results;    
}

Проблема заключается в том, что Core Data Helper возвращает два объекта в своих результатах NSMutableArray, но объявления NSMutableArray View Controller получают ноль.Что теряется при передаче NSMutableArray обратно от помощника к контроллеру?Если я изменяю все переменные и результаты на NSArray, все работает.

1 Ответ

0 голосов
/ 28 марта 2012

Я считаю, что это была странная проблема с Xcode.Я убираю и перестраиваю сборку и все работает.Прошу прощения за потраченное время и спасибо за помощь!Я хотел бы узнать больше о проблемах управления памятью.

...