iOS`stringByAppendingPathComponent:`不工作

时间:2013-04-15 00:49:17

标签: ios objective-c nsstring

我在做这个时有一个奇怪的问题

NSLog(@"%@", [self.pat stringByAppendingPathComponent:[tableView cellForRowAtIndexPath:indexPath].textLabel.text]);

记录此

/var/mobile/Applications/C6E7B405-5A68-4729-AFA9-910E17AFE825/Documents/Downloads

这是self.pat是什么,没有附加字符串。这是在我的tableView:cellForRow:atIndexPath:方法中,并且在我执行此操作之前正在设置表格视图单元格的文本,并且正确显示。 self.pat被声明为@property (strong, nonatomic) NSString *pat,我像这样设置单元格的文本

cell.textLabel.text = [files objectAtIndex:indexPath.row];

我在self.patviewDidAppear:animated:设置了viewDidLoad:

2 个答案:

答案 0 :(得分:0)

您需要做的第一件事是在此处尝试使用它的上下文中获取[tableView cellForRowAtIndexPath:indexPath]的值。我的猜测是nil(因为tableViewindexPathnil)。

<强>更新

正如maddy在评论中指出的那样,不能将nil传递给-stringByAppendingPathComponent:,因为它会引发异常。而且我认为我们需要了解-cellForRowAtIndexPath:中发生的事情才能真正了解这一点。

但是,真的,更令人不安的是你从视图中获取数据。在MVC设计中,您的所有数据都应来自模型。实际上,您应该从用于填充单元格的相同模型中获取值,而不是使用单元格标签的内容生成此路径。

答案 1 :(得分:0)

测试后

[self.pat stringByAppendingPathComponent:[files objectAtIndex:indexPath.row];

它有效,所以我猜textbabel没有设置得足够快。