Tôi đang viết một ứng dụng để hiển thị một số tin tức từ một cổng. Tin tức được lấy bằng cách sử dụng một tệp JSON từ Internet và sau đó được lưu trữ vào một NSMutableArray bằng cách sử dụng Mô hình CoreData. Rõ ràng một người dùng không thể xóa tin tức từ tệp JSON trên Internet, nhưng anh ta có thể ẩn chúng ở địa phương. Những vấn đề đi ra ở đây, nơi tôi có đoạn mã sau:NSMutableArray removeObjectAtIndex: ném ngoại lệ đối số không hợp lệ
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
if(!moc){
moc = [[NewsFetcher sharedInstance] managedObjectContext];
}
[[dataSet objectAtIndex:indexPath.row] setEliminata:[NSNumber numberWithBool:YES]];
NSError *error;
if(![moc save:&error]){
NSLog(@"C'è stato un errore!");
}
[dataSet removeObjectAtIndex:indexPath.row];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
}
Dòng:
[dataSet removeObjectAtIndex:indexPath.row];
nguyên nhân ứng dụng của tôi sụp đổ với các lỗi sau:
2010-07-12 19:08:16.021 ProvaVideo[284:207] * -[_PFArray removeObjectAtIndex:]: unrecognized selector sent to instance 0x451c820 2010-07-12 19:08:16.022 ProvaVideo[284:207] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[_PFArray removeObjectAtIndex:]: unrecognized selector sent to instance 0x451c820'
Tôi cố gắng hiểu tại sao nó không hoạt động nhưng tôi không thể. Nếu tôi khởi chạy lại ứng dụng, bản mới sẽ bị hủy một cách chính xác. Bất kỳ đề xuất nào ?? Cảm ơn trước.
Interface:
@interface ListOfVideo : UITableViewController <NSFetchedResultsControllerDelegate> {
NSMutableArray *dataSet;
}
@property (nonatomic, retain) NSMutableArray *dataSet;
// In the .m file:
@synthesize dataSet;
khởi trong viewDidLoad
:
dataSet = (NSMutableArray *) [[NewsFetcher sharedInstance]
fetchManagedObjectsForEntity:@"News"
withPredicate:predicate
withDescriptor:@"Titolo"];
[dataSet retain];
updateDatabase
... đây là khi kiểm tra cho các tin tức mới từ net, tôi thêm chúng trong MutableArray:
[dataSet addObject:theNews];
Bạn có chắc chắn rằng tập dữ liệu là NSMutableArray không? Nếu nó không đáp ứng với removeObjectAtIndex: nó có thể chỉ là một NSArray. –
Nó không phải là một 'NSMutableArray' nếu nó không đáp ứng với bộ chọn đó. Bạn có thể không tạo đúng hoặc sử dụng nhầm thuộc tính ['copy'] (http://stackoverflow.com/questions/3220120/nsmutablearray-addobject-nsarrayi-addobject-unrecognized-selector-sent-to/3220137#3220137). Nếu bạn có nghi ngờ, hãy thử kiểm tra nó bằng cách sử dụng '-isKindOfClass:'. –
umble, nó không phải là một NSMutableArray, nhưng: @interface ListOfVideo: UITableViewController {NSMutableArray * dataSet; } @property (nonatomic, giữ lại) NSMutableArray * dataSet; ... // Trong tệp .m @synthesize dataSet; –
IssamTP