2012-05-12 24 views
12

ich Core Data bin mit Daten in einer Tabellenansicht zu zeigen, aber ich dieses Problem immer wieder begegnen:undefinierte Symbole für Architektur Fehler

undefinierte Symbole für Architektur i386:
"_OBJC_CLASS _ $ _ NSEntityDescription", verwiesen von : objc-Klasse-ref in singleAppDelegate.o objc-Klasse-ref in singleViewController.o "_OBJC_CLASS _ $ _ NSFetchRequest", verwies von: objc-Klasse-ref in singleViewController.o "_OBJC_CLASS _ $ _ NSFetchedResultsController", verweist von: objc-class-ref in singleViewController.o "_OBJC_METACLASS _ $ _ NSManagedObject", Referen ced aus: _OBJC_METACLASS _ $ _ Daten in Data.o "_OBJC_CLASS _ $ _ NSManagedObject", verwiesen von: _OBJC_CLASS _ $ _ Daten in Data.o

hier ist mein 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 

und hier ist mein 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; 
} 

und hier ist mein data.m

@implementation Data 

@dynamic title; 
@dynamic content; 

@end 

Ich weiß nicht, was los ist.

Antwort

36

Fügen Sie CoreData.framework zu Ihrem Ziel hinzu.

Wählen Sie Ihr Ziel, wählen Sie Build Phases und fügen Sie CoreData.framework in Link Binary With Libraries hinzu.

+0

Vielen Dank ... – vijay

Verwandte Themen