我有一个问题,我认为有一个非常简单的解决方案,但我无法找到它是什么。
我有一个TableViewController,由用户填充进入另一个视图并填写一些文本字段。
表视图单元格有一个自定义标签,根据用户放入的内容进行更新,当我使用Core Data作为数据模型时,表格视图将使用NSFetchedResultsController进行更新。
我有一个用户填写的事件和子事件;子事件是可选的。
我想把它带到一个阶段,如果用户输入一个事件和子事件,它会显示为事件(子事件),但如果用户只输入一个事件而不是一个子事件,它应该只是事件作为UILabel。
以下是代码:
if (transaction.subevent)
{
customCell.eventLabel.text = [NSString stringWithFormat:@"%@ (%@)", transaction.occasion.title, transaction.subevent.title];
}
else
{
customCell.eventLabel.text = transaction.occasion.title;
}
如果用户输入子事件和事件,我会得到:
事件(subevent)作为正确的UILabel。
但是,如果用户只输入一个事件而不是子事件,我会得到:
event()作为UILabel不正确。
这当然意味着它在if语句中,而不是else。事件和子事件都是字符串,我错过了一种非常明显的方法来解决这个问题。
任何关于此的光线都会非常棒。
谢谢,
答案 0 :(得分:1)
似乎transaction.subevent不是nil,即使用户没有输入任何内容。您可以尝试测试transaction.subevent.title.length == 0
。
<强>更新强>
作为参考,这里是Wil Shipley着名的(?)isEmpty(增加了对NSNull的测试),用于更多的故障安全使用。虽然在这个用例中没有必要:
static inline BOOL IsEmpty(id thing) {
return thing == nil
|| thing == [NSNull null]
|| ([thing respondsToSelector:@selector(length)]
&& [(NSData *)thing length] == 0)
|| ([thing respondsToSelector:@selector(count)]
&& [(NSArray *)thing count] == 0);
}