一些数据你得注意!!
来源:互联网 发布:2017软件行业寒冬 编辑:程序博客网 时间:2024/05/21 06:46
搞这个本地通知还真涉及到很多知识。
先写写在这里涉及的如何去定义一个NS数据,比如说 数组呀 字典呀等等
定义NS数据
因为从NSUserDefaults里取出的数据为不可变的,但是我们又想取出这个数据有所改变,然后再次存放,该怎么办呢,所以我们需要将数据转为可变。
[SchedulModel sharedInstance].des = [[NSMutableArray alloc] initWithArray:[UserDefaults objectForKey:@"Schdes"]];
因为NSMutableArray继承NSArray
@interface NSMutableArray : NSArray
所以NSArray的方法 Mu是可以用的。自然
- (instancetype)initWithArray:(NSArray *)array;这样的话就实例一个不可变数组,而前面我们则可以写上NSMutableArray。这样,得出的自然就是可变的数组了。
我们也可以这样,仔细观察。NSMutableArray *_arry;
_arry = [UserDefaults objectForKey:@"SchArry"]; NSMutableArray *tempArry = [[NSMutableArray alloc]initWithArray:_arry]; _arry = [NSMutableArray arrayWithArray:tempArry];其实上面的方法有点多次一举了,利用一个中间可变数组。(我现在才发现多此一举。。)。
注:arrayWithArray 其实就是 - (instancetype)initWithArray:(NSArray *)array; 只不过它不需要alloc了。
类为什么 是否相等
__NSArrayM * 为可变 __NSCFArray *为不可变。你这样判断就知道了
BOOL classArry = [_arry isKindOfClass:[NSMutableDictionary class] ];
看BOOL值,看两个class是否相等。
判断是否含有字符
NSRange range = [ _str rangeOfString:@"月"];if (range.location == NSNotFound)你懂的
表格中的数据显示
当你一个表格需要根据某个字符而有不同样子的时候,比如3行cell。
每周五 123
每月17号 1456
今天 1789
当你这3条数据在 一个数组,3个字典里,字典里两个Key对应着 每周五和123
这样,你不需要遍历取到是“月”还是“周”还是“今天”来显示不同的位置,因为在表格中 刚显示即会遍历!
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
每个 indexPath.row 不同!所以不需要遍历显示!而是直接取,显示的时候 indexPath.row自然会变化!!if ([[_arry[indexPath.row] objectForKey:@"data"] rangeOfString:@"月"].location == NSNotFound && [[_arry[indexPath.row] objectForKey:@"data"] rangeOfString:@"周"].location == NSNotFound){ data.frame = CGRectMake(7, 12, 60, 25); time.frame = CGRectMake(70, 12, 150, 25); }else if ([[_arry[indexPath.row] objectForKey:@"data"] rangeOfString:@"月"].location == NSNotFound){ data.frame = CGRectMake(7, 12, 70, 25); time.frame = CGRectMake(80, 12, 150, 25); }else{ data.frame = CGRectMake(7, 12, 110, 25); time.frame = CGRectMake(110, 12, 150, 25); }
[data setText:[_arry[indexPath.row] objectForKey:@"data"]]; [time setText:[_arry[indexPath.row] objectForKey:@"time"]]; [des setText:[_arry[indexPath.row] objectForKey:@"des"]];
PS:缓存池中定义label属性,缓存池外:
UILabel *data = (UILabel *)[cell.contentView viewWithTag:indexPath.row - 100];你得会!
假如你下个界面有两个按钮用到,一个编辑,一个新建。这个时候
if (!self.editState) { _remindtime.text = @"不提前"; }else{ _remindtime.text = self.redTimeStr; }判断是编辑还是新建,是编辑 这个界面的界面传给下个界面,不是则显示新建的界面。在这个界面的两个按钮执行前设个标示。
刷新某行 某组
self.selectRow = indexPath.row; NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:2]; [self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationNone];
Incompatible pointer types sending 'NSDate *' to parameter of type 'NSData *'
我去网上找了,没有很明显的答案,但是当我看到两个人说的话
NSDate才能接住返回的[datePicker date]。
接收类型不对,[datePicker date]返回的对象是NSDate类型,不应该用NSData去接受它的实例。
我猜就是方法可能写错了。然后突然想到,诶 * * * ,诶 我不要* 可不可以,是不是方法不能写*,return的时候还传time进去了之类的。 不是有个id的不要求类型,感觉上是这样的。于是换了个方法
-(NSDate *)calculationSpecifiedTimeAgo:(id)time howTimeAgo:(NSString *)rem搞定。
记得返回什么类型的 前面要写什么类型, 不能 - (void) ,因为这是方法。写了void之后会报错。
plist文件 取值
+(id)stringZHPlistForKey:(NSString *)pKey{ NSString *sPath=[[NSBundle mainBundle] pathForResource:@"zhString" ofType:@"plist"]; NSDictionary *dict=[[NSDictionary alloc] initWithContentsOfFile:sPath]; return dict[pKey];}
_selectSec = [[[QQTStringPlist stringZHPlistForKey:@"RemindTime"] objectForKey:self.timeStr] intValue];
这样可以解决勾选问题,这个界面的值,在下个界面多个值中自动勾选,当然,这样还能解决很多问题。
判断一段时间前的时间
原来是有现成的方法的。。。
创建一定时间间隔的NSDate对象:NSTimeInterval secondsPerDay = 24 * 60 * 60; //明天时间NSDate *tomorrow = [[NSDate alloc] initWithTimeIntervalSinceNow:secondsPerDay]; //昨天时间NSDate *yesterday = [[NSDate alloc] initWithTimeIntervalSinceNow:-secondsPerDay];
界面跳转 定位 代理不执行
当你需要代码跳转至别的界面的时候,又要在那个界面执行定位功能,此时 你可能会发现定位功能只能执行一次 或者半天才能执行,这时,很可能就是代理 跟 本身实例的问题。个人觉得,这种定位的最不能随便实例,随便设代理为自己,感觉设多了就会出现问题,所以必须得先把有关定位的东西能删的删了
-(void)lijidingwei:(NSString *)aMsg{ //============立即定位===============// _userLocation = nil; _userLocation.delegate = nil; [_userLocation stopUserLocationService]; _immediLocaInfo = [[RequestInfoMdl alloc] init]; _userLocation = [[BMKLocationService alloc] init]; _userLocation.delegate = self; [self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0f]; [XCCommonUtility requestModel:_immediLocaInfo string:aMsg]; [RequestInfoMdl sharedInstance].pType = 10; [RequestInfoMdl sharedInstance].immediateType = _immediLocaInfo.body; [RequestInfoMdl sharedInstance].seqStr = _immediLocaInfo.seqStr;}-(void)delayMethod{ [_userLocation startUserLocationService];}
原来到处实例,设代理,现在通通删掉,只有一个地方设开始定位,几个地方实例,每次都能定位成功。
0 0
- 一些数据你得注意!!
- 使用PHP开发你必须得注意的要点
- 数据挖掘你必须得知道的
- C语言 -- 二维数组得一些需要注意得细节
- springboot下csv文件下载需要注意得一些细节以及功能得完善
- 数据绑定需要注意的一些
- 数据挖掘,等你等得好辛苦。。。
- 大数据告诉你梅西完美得不可思议
- 想成为数据科学家?你得先读读这篇文章
- 跨国合作的项目管理中值得注意的一些事情
- 做移动App来创业?你得注意这四个问题
- 关于ArrayList.remove()的一些你没注意的细节
- Android 7.0你需要注意的一些坑。
- thinkphp开发中你需要注意的一些小问题
- 使用数据适配器DataAdapter的一些值得注意的地方
- 数据恢复过程中需要注意的一些问题
- 关于scanf输入数据时要注意的一些地方
- 数据恢复过程中应该注意的一些问题
- 进程与线程
- 程序员的进步从阅读自己的老代码开始
- C++模式匹配
- Android 获取apk签名
- ZOJ 2795 Ambiguous permutations(序列的置换)
- 一些数据你得注意!!
- 阿里云部署Docker(3)----指令学习
- 跨进程调用Service(AIDL Service)
- 我在csdn的第一篇博客
- innodb next-key lock解析
- 震荡发生 4要素 俗语
- 安卓天气应用
- 第一章 Makefile概述
- solr4.10.1安装说明