我将JSON数据存储为具有一对多关系的CoreData。我能够使用NSFetchRequest和快速枚举来获取数据,但数据不是我需要的顺序格式,它不能在我的UITableViewCells中使用我怎么能这样做 这是我的代码 这是我的数据模型 https://www.dropbox.com/s/1e1ujrjxtkjy9h9/Screen%20Shot%202015-04-29%20at%205.14.31%20pm.png?dl=0
_appDelegate = [[UIApplication sharedApplication]delegate];
_managedObjectContext = [_appDelegate managedObjectContext];
NSFetchRequest * fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"DealSection"];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"sectionID == %@",_sectionID]];
[fetchRequest setReturnsObjectsAsFaults:NO];
NSArray * sortDescriptor = [NSArray arrayWithObjects:nil];
[fetchRequest setSortDescriptors:sortDescriptor];
NSError * error;
NSArray * data = [_managedObjectContext executeFetchRequest:fetchRequest error:&error];
_fetchData = data;
for (DealSection * section in _fetchData) {
for (Deal * deal in [section alldeals]) {
NSLog(@"%@",[deal nameAttribute]);
}
}
我将所有代码放在ViewDidLoad
中这里是从NSLog获取数据但我的问题是能够打印数据但是无法将数据传递到表视图
答案 0 :(得分:0)
您发布的JSON代码段显示(与评论中的假设相反,道歉),每个Deal
可以有多个DealSections
。
您的DealSection
实体的关系名为alldeals
,目前是一对一的关系。即每个DealSection
只能有一个Deal
。我认为这应该是很多的。举个例子,你发布的JSON中的交易有ID = 6(name =“Services”)和ID = 8(name =“Wellness”)的部分。假设您与ID = 6的部分有另一笔交易 - 您是否要使用与现有DealSection
建立关系,或创建新的DealSection
?
目前,您的代码会创建一个新的DealSection
,但我认为您可能希望与现有DealSection
建立关系。要做到这一点,你需要
a)修改你的数据模型,使关系多了许多。
b)修改存储多对多关系数据的代码,以便通过尝试使用正确的ID获取DealSection
来开始。如果找到,请将DealSection
添加到交易sectionRelation
。如果找不到,请创建新的DealSection
并将其添加到Deal
。
修改强>
要在tableView中显示数据,您需要实现三种数据源方法:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// A table view section for each DealSection:
return [self.fetchData count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
DealSection *dealSection = self.fetchData[section];
NSArray *deals = [dealSection.alldeals allObjects];
return [deals count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Amend this identifier to match your cell prototype
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Set up the cell...
DealSection *dealSection = (DealSection *)self.fetchData[indexPath.section];
NSArray *deals = [dealSection.alldeals allObjects];
Deal *deal = (Deal *)deals[indexPath.row];
cell.textLabel.text = deal.nameAttribute;
return cell;
}
这是基本的表格视图,所以如果不清楚我推荐我在评论中提到的教程。