1

我已经安装了 iOS 7 的 GM 版本,成功升级了将我的应用程序更新到 iOS 7 所需的一切,但是我无法解决与 NSDate 相关的一件事。它在 iOS 6 上运行良好,但在 iOS 7 中无法正常工作。

在一个名为 TheItem.m 的文件中,我正在执行以下操作:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
            NSLog(@"TIMEEEEEEEEEEEEEEE %@", currentString);
            [self setPubTime:currentString];    
}

然后在:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"ItemsCell";

    //ItemsViewCell Is class of UITableViewCell having the IBOutlet pubTimeLabel
    ItemsViewCell *cell = (ItemsViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];     

    TheItem *item = [[channel items] objectAtIndex:[indexPath row]];

    cell.pubTimeLabel.text = [item pubTime];

//    NSLog(@"PUB PUB %@", item.pubTime);


      return cell;
}

NSLogs 显示日期字符串,但它没有显示在 tableviewcell 中。它在 iOS 6 上运行良好,但自从我将它更新到 iOS 7 后,应该在 tableviewcell 中显示日期字符串的标签什么也没显示。尝试在 iOS 开发论坛中提出相同的问题,根据我收到的答案,这不是 iOS 7 更新问题。

谁能指出什么是错的?提前致谢。

更新:我已经在我的设备上安装了 iOS 7 GM,然后从 App Store 我安装了我的一个应用程序,该应用程序是使用同一个项目提交的,并且没有显示日期标签。

更新:这是我为排除故障所做的几件事:使用 NSLogs 来查看是否在任何时候它不是 nil,更改 tableviewcell 高度,创建新标签,创建新插座,删除背景和单元格图像,更改了标签的字体和颜色,在模拟器和设备中尝试了该项目,但仍然没有运气。

更新:好的,根据我收到的评论,看起来我有一些背景或颜色问题或类似的问题。我做了更多的故障排除,它与颜色或背景或任何此类事情无关。在下面的代码中,我做了一些替换:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
        //    [self setPubTime:currentString];  THIS LINE IS REPLACED WITH THE FOLLOWING

    NSDateFormatter *df1 = [[NSDateFormatter alloc] init];
    [df1 setDateFormat:@"EEE, d MMM yyyy hh:mm:ss ZZZZ"];
    NSDate *newDate = [df1 dateFromString:currentString];
    NSDateFormatter *df2 = [[NSDateFormatter alloc] init];
    [df2 setDateFormat:@"EEE,d MMM yyyy"];
    NSString *dateString = [df2 stringFromDate:newDate];
    NSLog(@"DATE STRING %@", dateString);
    [self setPubTime:dateString];
}

现在相同的标签显示日期,证明标签没有颜色或背景问题。我不使用此更新代码的唯一问题是它在几个单元格中显示日期,而在少数几个单元格中没有显示任何内容并重新调整为空。

4

2 回答 2

2

它在 hh 处失败,您必须在日期格式化程序中使用 HH 才能使其正常工作。

只需使用 24(HH) 或 12(hh) 小时符号:

NSDateFormatter *df1 = [[NSDateFormatter alloc] init];
df1.locale = locale = [[NSLocale alloc] initWithLocaleIdentifier:@"EN"];
[df1 setDateFormat:@"EEE, d MMM yyyy HH:mm:ss ZZZZ"];
NSDate *newDate = [df1 dateFromString:currentString];
NSLog(@"NEW DATE %@", newDate);   

希望能帮助到你。谢谢!

于 2013-09-21T21:39:38.170 回答
0

我知道 dequeueReusableCellWithIdentifier 应该自己创建新的原型单元格,但是可能在 iOS6 中使用的某些东西现在在 iOS7 上被破坏了。尝试在您的方法中添加一个 alloc-init 块:

编辑:抱歉没有看到所有的评论,没有意识到你已经返回了单元格。

除此之外,您需要打破您的单元格返回代码并确保单元格和标签都是非零。您是否偶然尝试将标签设置为@“Hello World”?

于 2013-09-17T12:49:35.467 回答