나는 재미로 Master/Detail CoreData RSS 리더를 작성하는 중입니다. Category 1->n Feed 0->n Post
핵심 데이터 : 관리 객체 수정은 나머지 UITableView 레코드로 전파됩니다.
그래서 내 UISplitView의 왼쪽 창에서 범주별로 그룹화 피드가 있습니다 :
나는 다음과 같은 개체를 사용합니다. 피드를 선택하면 가져온 다음 오른쪽 창에 게시물을 표시합니다.
오른쪽 창에는 2 종류의 프로토 타입 셀인 read
및 unread
이 포함되어 있습니다.
read
및 unread
는 해당 속성 Post
ManagedObject의 (NSDate *)read
에 의존한다 : 그것은 nil
가 있다면, 그때는 unread
원형 셀을 사용하여 표시 할 수있다. 나는 포스트 셀을 선택할 때마다, 나는 오른쪽 창에 웹보기 창을 밀어 거랑를 따라 지금
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *feedTableIdentifier = @"unread";
Post *thepost = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSDate *tmpDate=[NSDate date];
if (thepost.read) {
tmpDate=thepost.read;
feedTableIdentifier = @"read";
} else if (thepost.date) {
tmpDate=thepost.date;
}
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:feedTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:feedTableIdentifier];
}
((UILabel *)[cell viewWithTag:1]).text = thepost.title;
NSDateFormatter *df=[[NSDateFormatter alloc] init];
df.dateFormat = @"EEEE, MMMM d, YYYY";
((UILabel *)[cell viewWithTag:2]).text = [df stringFromDate:tmpDate];
((UILabel *)[cell viewWithTag:3]).text = [self flattenHTML:thepost.excerpt];
return cell;
}
:
다음은 cellForRowAtIndexPath
메서드에 대한 코드입니다. 이 WebView는 관련 Post.url
페이지의 내용을 표시합니다. 동시에, 현재 NSDate로 설정할 현재 관리 객체 read
속성을 편집합니다. 내가있는 UIWebView 팝 그리고, 녹화 후 셀을 다시 피드 목록에 올 때 : 나는 다음 ManagedObjectContext을 저장하고 새로운 형식 반영하기 위해 오른쪽 창의 피드를 다시 반입됩니다 : 이제
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
PostDetailController *webController = [[PostDetailController alloc] init];
if ([[segue identifier] isEqualToString:@"ShowWebLink"]) {
webController = [segue destinationViewController];
webController.urlstr = ((Post *)sender).url;
}
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Post *post=[self.fetchedResultsController objectAtIndexPath:indexPath];
[self performSegueWithIdentifier:@"ShowWebLink" sender:post];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
post.read = [NSDate date];
NSError *error;
if (![self.managedObjectContext save:&error])
{
NSLog(@"[didSelectRowAtIndexPath] Error saving context: %@", error);
}
[self refetch];
}
을, 여기에 내 문제입니다 다음의 모든 셀은 처음으로 read
으로 표시됩니다. 두 번째로 UITableView의 모든 셀은 read
으로 표시됩니다.
아무도 내가 여기서 잘못하고있는 것을 말할 수 있습니까? 선택한 개체 만 읽음으로 표시 되길 바랍니다 ...
미리 도움을 주셔서 감사합니다.
편집 :
이는 didSelectRowAtIndexPath
방법이 라인에서 올 수 있을까요?
[post setValue:[NSDate date] forKey:@"read”];
난 아직도 setValue
대 점 표기법에 의해 혼란 스러워요 ...
편집 2 :
아니 :(
post.read = [NSDate date];
나는로 교체해야 방금 테스트했습니다.