* 一直有把 iOS 开发里用到的一些边边角角的小技巧写成一个集合的想法,但一直没有付诸实践。刚好备忘录里的零零碎碎记的东西够凑成一篇东西来,就把之前的一篇 OC 笔记 - 一些小技巧和问题处理的集合 给改了名,加上现在的第二篇,打算以后写成一个系列。长路漫漫,与诸君共勉。*
一、打印bool值
Objective-C1 2
| Bool _YESorNO = YES; NSLog(@"BOOL--YESorNO-->%@",_YESorNO?@"YES":@"NO");
|
二、判断系统语言
Objective-C1 2 3 4 5 6 7 8 9 10 11 12 13
| NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; NSArray * allLanguages = [defaults objectForKey:@"AppleLanguages"]; NSString * preferredLang = [allLanguages objectAtIndex:0];
NSLog(@"当前语言:%@", allLanguages); if ([preferredLang rangeOfString:@"en"].location != NSNotFound) {
... }else if([preferredLang rangeOfString:@"zh-Hans"].location != NSNotFound){
... }
|
三、检测数据类型
Objective-C1 2
| int myObject = 10; [myObject isKindOfClass:[NSString class]]
|
四、获取NSString字符串字节长度
Objective-C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| - (int)convertToInt:(NSString*)strtemp { int strlength = 0; char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding]; for (int i=0 ; i<[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++) { if (*p) { p++; strlength++; } else { p++; } } return strlength; }
|
使用方式
Objective-C1 2
| NSString *tempStr = @"Hello World!" Int strLength = [self convertToInt:tempStr];
|
五、更新 tableView 并滚动到固定下标位置
在更新 tableView
时,调用此方法
Objective-C1 2 3 4 5
| -(void)updateTableView{ NSIndexPath* path=[NSIndexPath indexPathForRow:self.talkArr.count-1 inSection:0]; [self.talkView insertRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationTop]; [self.talkView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionBottom animated:YES]; }
|
六、iOS 解决 NSData 转 NSString 后字符为空
iOS 中,将 NSData
转 NSString
的一般方法为
Objective-C1
| [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
但是当 data
中包含 00 时,所获得的新字符就会为 nil
,这时我们应该这样转
Objective-C1
| [NSString stringWithUTF8String:[data bytes]];
|
七、判断一个 view 是否为另一个 view 的子视图
Objective-C1
| BOOL isSubView = [myView isDescendantOfView:self.view];
|
首先给 Button
添加点击方法
Objective-C1
| [cell.btn addTarget:self action:@selector(cellBtnClicked:event:) forControlEvents:UIControlEventTouchUpInside];
|
在点击方法里实现
Objective-C1 2 3 4 5 6
| -(void)didClickButton:(UIButton *)button { Mycell *cell = (Mycell *)button.superview.superview; NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; NSLog(@"index of current cell:%ld", indexPath.row); }
|