2012-05-12 11 views
12

que estoy usando datos básicos para mostrar datos en una vista de tabla, pero me encuentro constantemente este problema:símbolos no definidos para el error arquitectura

símbolos no definidos para la arquitectura i386:
"_OBJC_CLASS _ $ _ NSEntityDescription", hace referencia desde : objc de clase-ref en singleAppDelegate.o clase objc-ref en singleViewController.o "_OBJC_CLASS _ $ _ NSFetchRequest", hace referencia a partir de: objc de clase-ref en singleViewController.o "_OBJC_CLASS _ $ _ NSFetchedResultsController", referenciado desde: objc-class-ref en singleViewController.o "_OBJC_METACLASS _ $ _ NSManagedObject", referencia ced de: _OBJC_METACLASS _ $ _ datos en Data.o "_OBJC_CLASS _ $ _ NSManagedObject", hace referencia a partir de: _OBJC_CLASS _ $ _ datos en Data.o

aquí está mi singleViewController.m

#import "Data.h" 
#import "singleViewController.h" 

@interface singleViewController() 

@end 

@implementation singleViewController 

@synthesize managedObjectContext; 
@synthesize fetchedResultsController = _fetchedResultsController; 

- (id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSError *error; 
    if (![[self fetchedResultsController] performFetch:&error]) { 
     // Update to handle the error appropriately. 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     exit(-1); // Fail 
    } 

    self.title = @"Core Data"; 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 

    self.fetchedResultsController = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    id sectionInfo = 
    [[_fetchedResultsController sections] objectAtIndex:section]; 
    return [sectionInfo numberOfObjects]; 
} 

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath { 
    Data *info = [_fetchedResultsController objectAtIndexPath:indexPath]; 
    cell.textLabel.text = info.title; 
    cell.detailTextLabel.text = info.content; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (!cell) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 

    // Configure the cell... 
    [self configureCell:cell atIndexPath:indexPath]; 

    return cell; 
} 

#pragma mark - fetchedResultsController 

- (NSFetchedResultsController *)fetchedResultsController { 

    if (_fetchedResultsController != nil) { 
     return _fetchedResultsController; 
    } 

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription 
            entityForName:@"Data" inManagedObjectContext:managedObjectContext]; 
    [fetchRequest setEntity:entity]; 

    [fetchRequest setFetchBatchSize:20]; 

    NSFetchedResultsController *theFetchedResultsController = 
    [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
             managedObjectContext:managedObjectContext sectionNameKeyPath:nil 
                cacheName:@"Root"]; 
    self.fetchedResultsController = theFetchedResultsController; 
    _fetchedResultsController.delegate = self; 

    return _fetchedResultsController; 

} 

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller { 
    // The fetch controller is about to start sending change notifications, so prepare the table view for updates. 
    [self.tableView beginUpdates]; 
} 


- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath { 

    UITableView *tableView = self.tableView; 

    switch(type) { 

     case NSFetchedResultsChangeInsert: 
      [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade]; 
      break; 

     case NSFetchedResultsChangeDelete: 
      [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
      break; 

     case NSFetchedResultsChangeUpdate: 
      [self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath]; 
      break; 

     case NSFetchedResultsChangeMove: 
      [tableView deleteRowsAtIndexPaths:[NSArray 
               arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
      [tableView insertRowsAtIndexPaths:[NSArray 
               arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade]; 
      break; 
    } 
} 


- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type { 

    switch(type) { 

     case NSFetchedResultsChangeInsert: 
      [self.tableView insertSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade]; 
      break; 

     case NSFetchedResultsChangeDelete: 
      [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade]; 
      break; 
    } 
} 


- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller { 
    // The fetch controller has sent all current change notifications, so tell the table view to process all updates. 
    [self.tableView endUpdates]; 
} 

@end 

y aquí está mi appdelegate.m

#import "Data.h" 
#import "singleAppDelegate.h" 
#import "singleAppDelegate.h" 

@implementation singleAppDelegate 

@synthesize window = _window; 
@synthesize managedObjectContext = __managedObjectContext; 
@synthesize managedObjectModel = __managedObjectModel; 
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    NSManagedObjectContext *context = [self managedObjectContext]; 
    Data *data = [NSEntityDescription 
             insertNewObjectForEntityForName:@"Data" 
             inManagedObjectContext:context]; 
    data.title = @"title"; 
    data.content = @"test content"; 

    NSError *error; 
    if (![context save:&error]) { 
     NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]); 
    } 
    return YES; 
} 

y aquí está mi data.m

@implementation Data 

@dynamic title; 
@dynamic content; 

@end 

No sé qué pasa.

Respuesta

36

Agregue CoreData.framework a su destino.

Elija su destino, seleccione Build Phases y agregue CoreData.framework en Link Binary With Libraries.

+0

Muchas gracias ... – vijay

Cuestiones relacionadas