我有一个'Contact'类,它有两个属性:firstName和lastName.当我想显示联系人的全名时,我就是这样做的:
NSString *fullName = [NSString stringWithFormat:@"%@ %@", contact.firstName, contact.lastName];
Run Code Online (Sandbox Code Playgroud)
但是当firstName和/或lastName设置为nil时,我在fullName字符串中得到一个"(null)".为了防止它,这是我做的:
NSString *first = contact.firstName;
if(first == nil) first = @"";
NSString *last = contact.lastName;
if(last == nil) last = @"";
NSString *fullName = [NSString stringWithFormat:@"%@ %@", first, last];
Run Code Online (Sandbox Code Playgroud)
有人知道更好/更简洁的方法吗?
这是我第一次在这里提出一个问题,但我不得不说这个网站在过去几个月对我来说是一个巨大的帮助(iphone-dev-wise),我感谢你.
但是,我找不到任何有关此问题的解决方案:我有一个带有2个部分的UITableView,并且第一次启动应用程序时没有行.用户可以根据自己的意愿稍后填写这些部分(这里的内容不相关).UITableView在填充行时看起来很好,但是当没有行时看起来很丑陋(2个标题部分粘在一起,中间没有空格).这就是为什么我想在没有行时添加一个漂亮的"无行"视图.
我使用了viewForFooterInSection:
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
if(section == 0)
{
if([firstSectionArray count] == 0)
return 44;
else
return 0;
}
return 0;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
if(section == 0)
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(200, 10, 50, 44)];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor colorWithWhite:0.6 alpha:1.0];
label.textAlignment = UITextAlignmentCenter;
label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
label.text = @"No row";
return [label autorelease];
}
return nil;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 2;
}
- …Run Code Online (Sandbox Code Playgroud) 有谁知道在一个viewController中管理几个tableViews的简单方法?到目前为止,我一直在这样做:
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if(tableView == self.tableView1)
return 1;
else if(tableView == self.tableView2)
return 2;
}
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if(tableView == self.tableView1)
return @"bla";
else if(tableView == self.tableView2)
return @"blabla";
}
-(NSString *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(tableView == self.tableView1)
...
else if(tableView == self.tableView2)
...
}
Run Code Online (Sandbox Code Playgroud)
我发现我必须为每个单一委托方法使用if/else语句真的很烦人.另外,当有很多tableView时,它真的很难读.此外,我对NSURLConnection等有同样的问题......只要我有几个对象响应相同的委托协议,事情就会变得混乱.
让事情变得简单的最好方法是什么?谢谢