我正在做一個卡拉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;
}
,但是當我打開每首歌曲到的tableview在我的HomeController它什麼都不顯示,當我嘗試NSLog的我的變量*歌曲它顯示的消息(這意味着他們不能加載數據):
$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
你可以請只嘗試一次NSString * tempString = song.name;然後cell.textlabel.text = tempString;然後告訴我你是否仍然有錯誤。如果這將解決你的問題,那麼我會向你解釋這個 –
我做到了,但結果仍然是一樣的:(。我「po歌」,並且它顯示「...數據:」。奇怪的是,我的歌曲數組仍然有1000個對象,但我無法將每個對象都推送到我的*歌曲變量中。 –
tommy
從哪兒來KBSong *歌曲= [歌曲objectAtIndex:indexPath.row]; – RFG