» 首頁 » 討論區 » iOS程式討論 »從CoreData取得資料

從CoreData取得資料

發表人: Seachaos
積分: 2432
發表時間: 2012-01-30 01:22:00
iOS內建了相當好用的CoreData來幫助我們存取SQLite或是其他的資料型態
其中在不同的Controller要使用的話要先取得managedObjectContext

[sea:javaCode]
// get managedObjectContext from delegate
myAppDelegate *myApp = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext = myApp.managedObjectContext; // 從delegate取得managedObjectContext
[/sea]

再來可以用NSSortDescriptor來對資料排序
[sea:javaCode]
NSSortDescriptor *sortDescription = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortArray = [[NSArray alloc] initWithObjects:sortDescription, nil];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"table" inManagedObjectContext:managedObjectContext]]; // 設定從那(table)抓資料
[fetchRequest setSortDescriptors:sortArray]; // 設定排序規則

NSError *error;
NSMutableArray *results = [[managedObjectContext executeFetchRequest:fetchRequest error:&error] mutableCopy];
if(results == nil){
NSLog(@"fetch data failed.");
}
self.items = results;
[sortArray release]; // 沒用到之後記得release
[sortDescription release];
[fetchRequest release];
[/sea]
從items取出資料example:

[sea:javaCode]
myNSManagedObject* row = [self.items objectAtIndex:indexPath.row];
cell.textLabel.text = row.name;
[/sea]