是的,是的。对我感到羞耻。我想在UIView中画画,我的代码是:
NSString *str;
if(kmObj.metal!=@"" && kmObj.metalName2!=@"" && kmObj.metalname3!=@"")
{
str=[NSString stringWithFormat:@"%@ + %@ + %@",kmObj.metal,kmObj.metalName2,kmObj.metalname3];
}
if(kmObj.metal!=@"" && kmObj.metalName2!=@"" && kmObj.metalname3==@"")
{
str=[NSString stringWithFormat:@"%@ + %@",kmObj.metal,kmObj.metalName2];
}
if(kmObj.metal!=@"" && kmObj.metalName2==@"" && kmObj.metalname3==@"")
{
str=[NSString stringWithFormat:@"%@",kmObj.metal];
}
[str drawAtPoint:CGPointMake(10.0,234.0)
forWidth:200
withFont:[UIFont systemFontOfSize:20.0]
minFontSize:20.0
actualFontSize:NULL
lineBreakMode:UILineBreakModeTailTruncation
baselineAdjustment:UIBaselineAdjustmentAlignBaselines];
因此,此代码假设检查Object是否包含多个金属名称记录。如果是这样,它必须格式化字符串形式:Au + Ag + Cu ...我的问题是在输出绘制中我无法摆脱我不需要它们的+符号。我的if语句有什么问题吗?
答案 0 :(得分:2)
而不是if (string != @"")
,请使用![string isEqualToString:@""]
或([string length] > 0)
。您需要确保执行值比较,而不是指针比较。
无论如何,我会写这样的代码:
NSString *outputString = @"";
if ([firstString length] > 0) {
outputString = [outputString stringByAppendingString:firstString];
}
if ([secondString length] > 0) {
outputString = [outputString stringByAppendingFormat:@" + %@", secondString];
}
if ([thirdString length] > 0) {
outputString = [outputString stringByAppendingFormat:@" + %@", thirdString];
}
使用这种技术,您可以单独检查每个字符串,只有在知道其他有效字符串后才会包含加号。
答案 1 :(得分:1)
字符串比较应采用以下形式:[stringA isEqualToString:stringB]
来自文档:When you know both objects are strings, this method is a faster way to check equality than isEqual:
另外,==
对于字符串来说很奇怪 - 它们都是非基元的,你想要进行值比较。
另外,您应该考虑使用nil
和/或[NSNull null]
值的可能性(取决于这些值的来源)。您当前对它们是否等于空字符串的测试不会考虑到这一点。
答案 2 :(得分:0)
你的意思是你不想要“+”号吗?然后不要把它放在你的NSString中。
所以而不是
str = [NSString stringWithFormat:@"%@ + %@ + %@",kmObj.metal,kmObj.metalName2,kmObj.metalname3];
DO
str = [NSString stringWithFormat:@"%@ %@ %@",kmObj.metal,kmObj.metalName2,kmObj.metalname3];
还可以使用[kmObj.metal isEqualToString:@""]
进行字符串比较