2012-09-12 32 views
5

Tôi đã nhìn thấy bài viết khác liên quan đến lỗi chọn không được công nhận, nhưng không liên quan đến mã tự động tạo ra trong phương pháp sau đây:Core Data sụp đổ - không được công nhận selector

- (void)tableView:(UITableView *)tableView commitEditingStyle:forRowAtIndexPath: 

này được gọi khi tôi vuốt để xóa, và khi tôi chạm vào nút delete tôi nhận được lỗi sau:

-[Vehicle removeObjectFromGasUpsAtIndex:]: unrecognized selector sent to instance 0x8172c60

My NSManagedObject lớp, xe, có một biến NSOrderedSet tên gasUps rằng nên trả lời tin nhắn này khi tôi muốn xóa nó. Hoặc tôi nghĩ vậy.

Dưới đây là toàn bộ phương pháp, nơi nó được đâm:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
    // need to delete gas up and not vehicle 
    int row = [indexPath row]; 

    //[self.selectedVehicle removeObjectFromGasUpsAtIndex:row]; 
    [self.selectedVehicle removeObjectFromGasUpsAtIndex:row]; 
    NSError *error = nil; 
    if (![self.managedObjectContext save:&error]) { 
     // Replace this implementation with code to handle the error appropriately. 
     // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    } 
} 
} 

Tại sao chọn này không được công nhận?

CHỈNH SỬA: đây là dành cho Jody.

#import <Foundation/Foundation.h> 
#import <CoreData/CoreData.h> 

typedef enum { 
    FullExtract, 
    NameExtract 
} kTitleExtract; 

@interface Vehicle : NSManagedObject 

@property (nonatomic, retain) NSString * name; 
@property (nonatomic, retain) NSNumber * year; 
@property (nonatomic, retain) NSString * make; 
@property (nonatomic, retain) NSNumber * mileage; 
@property (nonatomic, retain) NSString * model; 
@property (nonatomic, retain) NSOrderedSet *gasUps; 

// added methods 
- (NSString *)getTitleExtract:(kTitleExtract)titleExtract; 

@end 

@interface Vehicle (CoreDataGeneratedAccessors) 

- (void)insertObject:(NSManagedObject *)value inGasUpsAtIndex:(NSUInteger)idx; 
- (void)removeObjectFromGasUpsAtIndex:(NSUInteger)idx; 
- (void)insertGasUps:(NSArray *)value atIndexes:(NSIndexSet *)indexes; 
- (void)removeGasUpsAtIndexes:(NSIndexSet *)indexes; 
- (void)replaceObjectInGasUpsAtIndex:(NSUInteger)idx withObject:(NSManagedObject *)value; 
- (void)replaceGasUpsAtIndexes:(NSIndexSet *)indexes withGasUps:(NSArray *)values; 
- (void)addGasUpsObject:(NSManagedObject *)value; 
- (void)removeGasUpsObject:(NSManagedObject *)value; 
- (void)addGasUps:(NSOrderedSet *)values; 
- (void)removeGasUps:(NSOrderedSet *)values; 

@end 

Và đây là đoạn mã nơi self.selectedVehicle được thiết lập:

if (self.vehiclesArray != nil && [self.vehiclesArray count] != 0 && self.vehicleIndex != -1) { 
    // enable add buttom 
    [self.navigationItem.rightBarButtonItem setEnabled:YES]; 
    self.selectedVehicle = [self.vehiclesArray objectAtIndex:self.vehicleIndex]; 
    NSLog(@"set selected vehicle"); 
} else { 
    // disable add button 
    [self.navigationItem.rightBarButtonItem setEnabled:NO]; 

    // set vehicle defaults to -1 and make disable add buttom 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setInteger:-1 forKey:@"vehicleIndex"]; 
    [defaults synchronize]; 
    NSLog(@"set index to -1"); 
} 
+0

Về cơ bản, bạn không cung cấp thông tin hữu ích. Chỉ là một lỗi và một dòng mã. Về cơ bản không có bối cảnh khác. Chúng tôi không phải là độc giả quan tâm. Tất cả những gì chúng tôi có thể nói với bạn là giống như thời gian chạy: đối tượng của bạn không nhận ra bộ chọn 'removeObjectFromGasUpsAtIndex'. Bây giờ, nếu bạn muốn hiển thị mã định nghĩa kiểu 'Vehicle', và cách bạn thiết lập' self.selectedVehicle' và thậm chí có thể là bản ghi của đối tượng ngay trước khi gửi tin nhắn ... thì có lẽ bạn có thể nhận được một số Cứu giúp. –

+0

bản sao có thể có của [Ngoại lệ được ném trong các trình truy cập được tạo bởi NSOrderedSet] (http://stackoverflow.com/questions/7385439/exception-thrown-in-nsorderedset-generated-accessors) – jrturton

Trả lời

5

này có lẽ liên quan đến một lỗi đã biết trong tự động cốt lõi Dữ liệu được tạo các phụ kiện cho ra lệnh cho một-nhiều các mối quan hệ.

rdar://10114310

Cho đến khi điều này được giải quyết bạn cần cung cấp thực hiện của riêng bạn cho accessors thiếu.

Xem câu trả lời cho this question

Các vấn đề liên quan