@interface Week : NSManagedObject {
}
@property (nonatomic, retain) NSNumber *weekID;
@property (nonatomic, retain) NSString *top;
@property (nonatomic, retain) NSString *summary1;
@property (nonatomic, retain) NSMutableArray *book;
@end
Je lis un fichier XML à partir du serveur et de mettre Vales au-dessus entity.Since Livres à lire pour cette semaine peuvent être multiples il est stocké dans MutableArray.I fait * livre pour être transformable dans mon fichier .xcdatamodel.Persisting NSMutableArray qui est propriété de base de données Entité
Mon analyseur ressemble à ceci qui analyse et initialise ci-dessus Entité de semaine.
if ([currentTag isEqualToString:@"book"]) {
NSString *USGSWebLink = [currentElementValue1 stringByStandardizingPath] ;
[week.book addObject:USGSWebLink];
[week setBook:week.book];
NSError *error;
if (![self.managedObjectContext save:&error]) {
NSLog(@"%@", [error domain]);
}
Ce stocke bien parce que je récupérer la valeur ci-dessus de CoreData et de stocker dans NSMutableArray « weekArray » ** à afficher en ** UITableView.
Mon programme se bloque en dessous de deux fonctions et le point de basculer bascule entre moins de 2 fonctions ... étrange !!!
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
**//sometimes program crashes at this point**
return [weekArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSManagedObject *object = (NSManagedObject *)[weekArray objectAtIndex:indexPath.row];
**// program crash at the above line.**
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = [object valueForKey:@"top"];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
// Set up the cell
return cell;
}
* SVP dites-moi où je me trompe? Est-ce problème dans la façon dont je livre le stockage NSMutableArray dans mon analyseur ou NSManagedObject *object = (NSManagedObject *)[weekArray objectAtIndex:indexPath.row];
ligne Parce que mon NSLog n'imprime pas au-dessous ligne indexPath.row.
Mon chercher fonction est:
- (void)fetchRecords {
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Week" inManagedObjectContext:appDelegate.managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity]; //NSLog(@"fetchRecords = %@",appDelegate.managedObjectContext);
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"weekID" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
[request setSortDescriptors:sortDescriptors];
[sortDescriptor release];
NSError *error;
NSMutableArray *mutableFetchResults = [[[managedObjectContext executeFetchRequest:request error:&error] mutableCopy] autorelease] ;
if (!mutableFetchResults) {
}
if (mutableFetchResults == nil) {
NSLog(@"week fetch failed");
}
self.weekArray = mutableFetchResults; NSLog(@"weekArray = %@",weekArray);
[mutableFetchResults release];
[request release];
}
Merci beaucoup "Jake". Mon programme fonctionne parfaitement après avoir supprimé "[mutableFetchResults release];" . Je n'aurais pas pu comprendre moi-même ce que tu as fait. – Ravi