来源:蜘蛛抓取(WebSpider)
时间:2017-06-21 08:38
标签:
奇迹暖暖充值30元档位
& 在iOS中数据的存储,无论是存储数据库(sqlite &支持的数据类型有五种NULL,整形(INT),浮点型(REAL)文本字符串(TEXT),二进制数据(BLOB) )还是存放在keychain , 或者是本地 plist 的文件 ,数据都以NSData(二进制数据)进行存储比较好,这样就牵扯到我们每定义一个新的类型,如果该数据需要义二进制数据进行存储时,必须进行归档和解档 ,每一次都要每定义一个新类都要进行一次归档和解档的书写,那有没有通用的办法呢?
&上面的问题我们使用runtime来解决,在运行时,动态的获取该类是否遵循NSCoding 协议,动态的遵循该协议,并实现该协议的归档解档方法,如题流程如图:
如题代码如下:&
+ (void)addCodingProtocolToObject:(Class )class{& & &&SEL& encodeSEL =&@selector(encodeWithCoder:);& & &&SEL& decoderSEL =&@selector(initWithCoder:);& [DataManager&addProtocol:@&NSCoding&&toClass:class];& Class destClass = [DataManager&class];& [DataManager&addProtocolMethod:encodeSEL&withClass:destClass&toClass:class];& [DataManager&addProtocolMethod:decoderSEL&withClass:destClass&toClass:class];
+ (void)addProtocol:(NSString&*)protocolName toClass:(Class)class{& & if([protocolName&hasPrefix:@&&&])& & {& & & & protocolName = [protocolName&substringWithRange:NSMakeRange(1, protocolName.length-2)];& & }& &&const&char& *name = [protocolName&UTF8String];& & Protocol *instanceProtocol =&objc_getProtocol(name);& & if(instanceProtocol)& & {& & & & if(class_conformsToProtocol(class, instanceProtocol))&& & & & {&& & & & & & &&& & & & }& & }else& & {& & & & instanceProtocol =&objc_allocateProtocol(name);& & & &&objc_registerProtocol(instanceProtocol);& & }& &&class_addProtocol(class, instanceProtocol);}
+ (void)addProtocolMethod:(SEL)protocolSEL withClass:(Class)selClass toClass:(Class)toClass{& & &&& &&Method& protocolMethod =&class_getInstanceMethod(selClass,protocolSEL);& &&IMP& & protocolIMP =&method_getImplementation(protocolMethod);& &&const&char&*protocolTypes =&method_getTypeEncoding(protocolMethod);& & if(!class_addMethod(toClass, protocolSEL, protocolIMP, protocolTypes))& & {& & & &&class_replaceMethod(toClass, protocolSEL, protocolIMP, protocolTypes);& & }}
- (void)encodeWithCoder:(NSCoder&*)aCoder {& & Class selfClass = self.class;& & while (selfClass &&selfClass != [NSObject&class]) {& & & &&unsigned&int&outCount =&0;& & & &&Ivar&*ivars =&class_copyIvarList([selfClass&class], &outCount);& & & & for (int&i =&0; i & outC i++) {& & & && & & & & &&Ivar&ivar = ivars[i];& & & & & &&const&char&*name =&ivar_getName(ivar);& & & & & &&NSString&*key = [NSString&stringWithUTF8String:name];
& & & & & &&id&value = [self&valueForKeyPath:key];& & & & & & [aCoder&encodeObject:value&forKey:key];& & & & }& & & &&free(ivars);& & & & selfClass = [selfClass&superclass];& & }
- (instancetype)initWithCoder:(NSCoder&*)aDecoder {& & Class selfClass = self.class;& & while (selfClass &&selfClass != [NSObject&class]) {
& & & &&unsigned&int&outCount =&0;& & & &&Ivar&*ivars =&class_copyIvarList(selfClass, &outCount);& & & & for (int&i =&0; i & outC i++) {& & & & & &&Ivar&ivar = ivars[i];& & & & & &&NSString&*key = [NSString&stringWithUTF8String:ivar_getName(ivar)];& & & & & &&id&value = [aDecoder&decodeObjectForKey:key];& & & & & & [self&setValue:value&forKey:key];& & & & }& & & &&free(ivars);& & & & selfClass = [selfClass&superclass];& & }& &}
& & & &以后对任何一个对象转化为NSData 进行存储和传输时,不用每次去手动的实现归档和解档,只用调用该方法即可
+ (void)addCodingProtocolToObject:(Class )class &传入类名
& & &由于归档解档本身不支持可变的集合进行转化为二进制数据存储,所以改方案也不支持可变的集合&NSMutableArray& NSMutableDictionary的类的归档和解档
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:48056次
积分:1137
积分:1137
排名:千里之外
原创:60篇
转载:40篇
(2)(1)(5)(4)(18)(7)(5)(16)(12)(12)(12)(1)当前位置:
由于服务器BUG导致在2月8日-2月9日期间,iOS 30元充值档位部分用户充值扣款成功后未到账,技术大大正在紧急修复,目前iOS 30元充值项已暂时取消,其他档位充值正常。 安卓用户不受到此问题影响。 充值30元档位尚未到账的用户请耐心等待,官方将会在确认数据后进行补发,并给予双倍钻石补偿。 2月8日充值未到账用户预计2月9日18:00前通过邮件进行补偿发放; 2月9日充值未到账用户预计2月10日18:00前通过邮件进行补偿发放。 此次补偿内容包含您30元充值项异常补发内容,及充值进度计入异常问题补偿内容。给您带来不便敬请谅解,感谢您对游戏的支持与理解。 更多关于游戏最新动态资讯大家不妨关注微信公众号:说玩互娱,长按二维码关注
《暗黑破坏神》系列作为经典魔幻ARPG受到许多玩家的喜爱,而由原暴...
扫一扫下载到手机
扫一扫下载到手机
还可以再输入100个字符
我还是觉得真的好辛苦的感觉,太不容易了,好无力的感觉啊。
老了,撸不动了,需要益智游戏长长脑
很有古典风的感觉,赞一个
《我叫MT英雄杀》删档计费测试走起 首发不再遥远
由于首轮测试非常成功,《我叫MT英雄杀》决定在5月18日这一天开启第二轮删档测试,当然,此次测试依旧可以让玩家体验充值功能,在本次删档内测期间,玩家首笔充值将在不删档内测时进行150%钻石返利,该福利...
《问道》小师妹献礼约老兵 千万福利等候王者归来
《九阴》手游年度资料片“江湖无界”今日破鞘来袭
《胡莱三国2》倾情代言策略手游 神秘霸气女神
《新琅琊榜》手游为你拉郎配 飞流的CP是蔺晨
死神觉醒评测:“划”时代的死神手游
三大民工漫之一的死神BLEACH是最早进入国人视野的新元素日漫之一,在各大IP手游纷纷浮出水面之后,死神也被寄予众望。而死神觉醒这款手游就是一款改编自死神的手游。从游戏的画面来看,高度还原的原画和技能动作是游戏的最大亮点,下面就由说玩小编来带大家走进死神觉醒这款游戏,来体验一下这款死神手游。
横扫千军评测:横扫三国,一统天下
三国,这一个动乱的时代造就出了多少英雄豪杰,又有多少故事流传至今,在我们心中久久不能忘怀。正是因为这些令人津津乐道的故事与传奇,三国这个题材一直是游戏的重要题材。由心动打造,以三国为背景的手游《横扫千军》,以其霸道的名字杀入玩家的视线。这样一款主打写实战场的手游,能否更真实的将我们带入那个让人心驰神往的世界,快点跟上说玩小编的脚步,一起进入游戏,一探究竟。
童话大冒险评测:童话世界等你来冒险
小时候读过的童话故事,相信很多玩家都难以忘怀。经典的小红帽、白雪公主、水晶鞋、拇指姑娘等故事更是如数家珍。童话世界对于我们来讲,总是寄托了纯真的情感以及美好的回忆。如果给你一次穿越到童话世界里冒险的机会,你可愿意?而童话大冒险就是这样一款包含多种童话故事的游戏,下面就跟小编一起来瞧一瞧吧。
圣灵zero评测:“打炮”与卡牌的完美结合
《圣灵Zero》虽然是一款卡牌游戏,但是其大刀阔斧的对卡牌游戏原有的战斗系统进行了大幅度的创新,整个游戏变得更具有趣味性,而其他系统上的小创新,也能让玩家在游戏中感受到不一样的乐趣。小编在这里就为大家评测下这款游戏。
阴阳师手游
最终幻想觉醒
轩辕剑3手游版
三生三世十里桃花手游
名侦探柯南纯黑的噩梦
天启之门手游下载傲世堂论坛App!论坛领银币!!
浏览过的版块
立习习泰禾
senlin197510
立习习泰禾
niezhenguo
战魂家族大妈
大连金耗耗
逍遥哥哥又来了
天敵小馬哥
无敌是多么寂寞
53兵工厂阿森纳
皇马球迷之球迷
好看不一样
阿森纳俱乐部
阿森纳俱乐部
中场发动机
浏览过的版块
您没有登录,不能回复。
回帖后跳转到最后一页
《最佳阵容》开放下载