一些数据你得注意!!

来源:互联网 发布: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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 qq红包支付密码忘了怎么办 个人卖东西人家要发票怎么办 打了欠条找不到人怎么办 公章掉进水里了怎么办 手游吃鸡限制登入15分钟怎么办 宝宝的小鸡淹了怎么办 宝宝小鸡底下淹了怎么办 4岁宝宝拉稀水怎么办 2岁半宝宝对眼怎么办 孩子在幼儿园中午不睡觉怎么办 20天婴儿拉稀水怎么办 3个月婴儿拉水怎么办 两岁宝宝拉水怎么办 1岁半宝宝拉水怎么办 5周孩子小鸡长脂肪粒怎么办 小孩丁丁长歪了怎么办 2个月的婴儿咳嗽怎么办 2个月的宝宝干咳怎么办 2月宝宝感冒咳嗽怎么办 产妇肚子上长小疙瘩很痒怎么办 泰迪生下小狗不吃奶怎么办? 刚生的狗不吃奶怎么办 刚出生的小牛不吃奶怎么办 吃奶的狗崽拉稀怎么办 新生儿吃奶老是呛到怎么办 刚生小狗不吃奶怎么办 刚出生的小羊不吃奶怎么办 羔羊走路不稳不吃奶怎么办 新生儿喝奶老是呛到怎么办 宝宝吃母乳呛到怎么办 宝宝一直睡觉不吃奶怎么办 3个月婴儿不吃奶怎么办 新生婴儿晚上不睡觉怎么办 宝宝肚子胀不吃奶怎么办 宝宝25天不睡觉怎么办 50天婴儿不吃奶怎么办 儿子关在房间玩电脑怎么办? 宽带拨号上网账号密码忘了怎么办 双眼皮割的太宽怎么办 营业执照异常名录移除注销怎么办 工商局注册后骚扰电话怎么办