我正在做一个卡拉OK项目。我想使用 NSManagedObjectModel 将我的数据加载到表视图中,但它没有用
首先,我将所有歌曲加载到我的 KBDataInitializer.m 中,它运行良好。我可以将它们推到一个数组中。我也可以 NSlog 所有歌曲的名称。
@implementation KBDataInitializer
- (NSArray*) getAllSongs{
[self setupDataContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc ] initWithEntityName:@"KBSong"];
NSError *fetchError;
NSArray *songs = [self.dataContext executeFetchRequest:fetchRequest error:&fetchError];
if (fetchError !=NULL){
NSLog(@"fetch data ERROR");
}
return songs;
}
但是,当我将每首歌曲加载到 HomeController 中的 tableview 时,它什么也不显示,当我尝试 NSlog 我的变量 *song 时,它显示一条消息(这意味着它们无法加载数据):
$3 = 0x0e483d90 <KBSong: 0xe483d90> (entity: KBSong; id: 0x818b630 <x-coredata://4BA983BA-1914-47C9-A22B-0373E84EAFC8/KBSong/p1> ; data: <fault>)
However in my viewDidLoad() I can load all songs.
我在 HomeController.h 中的代码
@interface KBHomeController : UIViewController<UITableViewDataSource,UITableViewDelegate>
{
NSArray *songs;
}
@end
这是我在 HomeController.m 的表格视图中的加载代码
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
KBDataInitializer *data = [[KBDataInitializer alloc]init];
//Use for import updated new Songs
//[data importData];
songs = [data getAllSongs];
// This one works fine
for (KBSong *song in songs)
{
NSLog(song.name);
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
KBSong *song = [songs objectAtIndex:indexPath.row];
cell.textLabel.text = song.name;
return cell;
}
这是我的 KBSong.h
@interface KBSong : NSManagedObject
@property (nonatomic, retain) NSNumber * code;
@property (nonatomic, retain) NSString * composer;
@property (nonatomic, retain) NSString * language;
@property (nonatomic, retain) NSString * lyric;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * volume;
@property (nonatomic, retain) NSNumber * favorite;
@end