最新消息:文章中包含代码时,请遵守代码高亮规范!

浅谈IOS一些判断条件【原创】

iOS Ace 533浏览 0评论
在我们的IOS开发中,无时无刻不在做着判断。数值是否为空啊,输入是否合法啊,时间大小啊等等判断条件。有些是天天用的,有些是不常用的。有时突然想用的时候去百度,不一定找的到合适的,还浪费时间。所以小的不才,在这写下一些经常用到的条件判断,如果没写到的,欢迎大家留言增加,本人也会不定期来增加的。
首先大家最常用的就是判断后台返回的JSON了,而其中 最常用的就是
- (BOOL)isEqualToString:(NSString *)aString;
用法 :
NSString *str = @"";
[str isEqualToString:@"”];
判断左右字符串的字面值是否一致。如果一致返回YES,否则返回NO。
 
其次就是空对象的比较,本人孤陋寡闻,某次后台传来一个空对象,打印出来是<null>,我以为是nil,就简单的写了一个 if(***) ,结果就悲剧了~O~。那么如何判断空对象呢?
- (BOOL)isKindOfClass:(Class)aClass;

 

就要用到这个函数啦。这个函数判断的是A与B是不是同一个类

那么刚才的问题就解决啦。
NSDictionary *dictionary = [NSDictionary dictionary];
[[dictionary objectForKey:@"data"] isKindOfClass:[NSNull class]];
这样,如果后台传来的数据中data为空对象的话,就会返回YES啦。
 
那么再加深一点,如果有个Person类,有个两个属性,
NSString *name;
NSString *birthday;
那么我们如何判断两个Person的name和birthday一样呢?
难倒使用:
if([person1.name isEqualToString:person2.name] && [person1.birthday isEqualToString:person2.birthday])
那如果Person有50个不同类型的属性呢?那岂不是要写死?
下面有个简单的方法可以办到这些:
- (BOOL)isEqual:(id)object;
它首先会判断person1和person2是否是一个对象(地址一致),
然后会判断person1和person2是不实是同一个类,
再接着,它会判断person1和person2里面的每个属性的值是否一致。如果一致就返回YES。

 

接下来我们需要来说一下时间比较了,经常有两个NSDate数据,如何去比较两个时间的早晚呢?我看了下网上的很多方法,要很多步,那么我来教大家一个一步搞定的。还是系统自带的方法。
NSDate *date1 = [NSDate date];
NSDate *date2 = [NSDate date];
//比较时间是否一致
[date1isEqualToDate:date2];
//比较时间1和时间2 哪个早一点,返回那个早的
[date1 earlierDate:date2];
//比较时间1和时间2 哪个迟一点,返回那个迟的
[date1 laterDate:date2];
//那么这三个方法结合起来,就能判断时间大小了。
/如果时间1小于时间2,返回YES
[date1 isEqualToDate:[date1 earlierDate:date2]];
//如果时间1大于时间2,返回YES
[date1 isEqualToDate:[date1 laterDate:date2]];

参考资料:
http://www.cnblogs.com/skyming/p/3485605.html
http://blog.csdn.net/weisubao/article/details/39996253

转载时请注明出处及相应链接,本文永久地址:http://blog.it985.com/20150.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者Ace的打赏,我们会更加努力!    如果您想成为作者,请点我

您必须 登录 才能发表评论!