我正在做这样的事情:
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *var1 = [standardUserDefaults objectForKey:@"obj1"];
NSString *var2 = [standardUserDefaults objectForKey:@"obj2"];
EmailUtil *email_obj = [[EmailUtil alloc] initWithSubject:@"Some subject" body:[[[@"This is var1: " stringByAppendingString: var1] stringByAppendingString:@" and var2: "] stringByAppendingString: var2]];
[email_obj send];
其中,EmailUtil只是我自己发送电子邮件的实用程序类。当字符串var1和var2不是nil时,此代码工作正常;但是,如果它们是零,程序将崩溃。无论值是什么,确保电子邮件无故障发送的优雅解决方案或良好做法是什么?
谢谢!
答案 0 :(得分:2)
在您的EmailUtil行之前,只需添加:
if(var1==nil) var1 = @"";
if(var2==nil) var2 = @"";
至少可以解决崩溃问题。
另一种可能更好的方法是使用NSString的stringWithFormat。 而不是:
[[[@"This is var1: " stringByAppendingString: var1] stringByAppendingString:@" and var2: "] stringByAppendingString: var2]
执行:
[NSString stringWithFormat:@"This is var1: %@ and var2: %@", var1,var2];
我相信它会对nil参数说(null)(没有测试这个)。这可能比我的原始代码和原始代码更清晰。
答案 1 :(得分:1)
我很想创建一个NSUserDefaults
类别,其方法返回一个保证字符串,用@“”代替nil或者你提供的默认值。如果您唯一关心的问题(永远!)是两个变量,但它可能也很方便重复使用,这可能有点过头了。