使用核心数据和表视图控制器时从UILabel中删除空白属性

时间:2014-03-07 14:05:20

标签: ios uilabel uitableview

我有一个问题,我认为有一个非常简单的解决方案,但我无法找到它是什么。

我有一个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。事件和子事件都是字符串,我错过了一种非常明显的方法来解决这个问题。

任何关于此的光线都会非常棒。

谢谢,

1 个答案:

答案 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);
}