nsdictionary

NSDictionary case insensitive objectForKey:

巧了我就是萌 提交于 2020-12-08 06:04:53
问题 NSDictionary has objectForKey but it's case-sentive for keys. There is No function available like - (id)objectForKey:(id)aKey options:(id) options; where in options you can pass "NSCaseInsensitiveSearch" To get key's from NSDictionary which is case-insesitive one can use the following code written below. 回答1: This isn't included for a couple of reasons: NSDictionary uses hash equality, and for pretty much any good hashing algorithm, any variation in the source string results in a different

IOS中通知中心(NSNotificationCenter)的使用总结

无人久伴 提交于 2020-03-30 04:23:31
IOS中通知中心NSNotificationCenter应用总结 一、了解几个相关的类 1、 NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量。 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象。 @property (readonly , copy ) NSString *name; 这个成员变量定义一个对象,可以理解为针对某一个对象的消息。 @property (readonly , retain ) id object; 这个成员变量是一个字典,可以用其来进行传值。 @property (readonly , copy ) NSDictionary *userInfo; NSNotification的初始化方法: - ( instancetype)initWithName:( NSString *)name object:( id)object userInfo:( NSDictionary *)userInfo; + ( instancetype)notificationWithName:( NSString *)aName object:( id)anObject; + ( instancetype)notificationWithName:( NSString *)aName object:( id)anObject userInfo

NSDictionary初始化,使用@{}方法,插入nil时会报空指针异常

北战南征 提交于 2020-03-23 13:15:05
由于今天在NSDictionary初始化的时候出现Crash异常,故记录一下,避免下次再犯。 在Objective-C中,NSDictionary初始化的方法有很多种 方法1: [NSDictionary dictionaryWithObjectsAndKeys:<#(id), ...#>, nil] 方法2: NSDictionary *dic = @{@"key":value} 那么,坑在哪里呢?就在第二种初始化方法 NSDictionary *dic = @{@"key":value} 那它到底是如何坑的呢? 如果value是nil 的话,必将引发Crash崩溃:'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]。意思就是说使用[__NSPlaceholderDictionary initWithObjects:forKeys:count:]这个初始化方法,发现keys count和objcects的个数不匹配了 那该如何避免这个问题呢? 在使用@{@”key”:value} 这种方式初始化的时候,一定要对value做是否为nil的判断,为nil就不要加入Dictionary 或者使用标准的初始化方法

JavaScript调用App原生代码(iOS、Android)通用解决方案

倖福魔咒の 提交于 2020-03-18 06:57:52
实际场景 场景:现在有一个H5活动页面,上面有一个登陆按钮,要求点击登陆按钮以后,唤出App内部的登录界面,当登录成功以后将用户的手机号返回给H5页面,显示出来。 这个场景应该算是比较完整的一次H5中的JavaScript与App原生代码进行交互了,这个过程,我们制定的方案满足以下几点: 满足基本的交互流程的功能 Android与iOS都能适用 H5的前端开发者,在书写JavaScript的业务代码的时候不需要为了迁就移动端语言的特性而写特殊的磨合代码 方便调试 交互流程 当H5页面上的JavaScript代码要调用原生的页面或者组件的时候,调用最好是双向的,一来一回,这样比较容易满足一些比较复杂的业务场景,就像上面的场景一样,有调用,有回调告知H5调用的结果。前端开发写的JavaScript代码基本上都是异步风格的,就拿上面的场景,如果登录是H5前端的,那么这个流程就会是: function loginClick() { loginComponent.login(function (error,result) { //处理登录完成以后的逻辑 }); } var loginComponent = { callBack:null, "login":function (callBack) { this.show(); this.callBack = callBack; }, show

iOS开发系列—Objective-C之Foundation框架

蹲街弑〆低调 提交于 2020-03-08 04:21:25
概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架Foundation,今天的主要内容有: Foundation概述 常用结构体 日期 字符串 数组 字典 装箱和拆箱 反射 拷贝 文件操作 归档 Foundation概述 为什么前面说的内容中新建一个类的时候我们都是选择Cocoa Class呢?Cocoa是什么呢? Cocoa不是一种编程语言(它可以运行多种编程语言),它也不是一个开发工具(通过命令行我们仍然可以开发Cocoa程序),它是创建Mac OS X和IOS程序的原生面向对象API,为这两者应用提供了编程环境。 我们通常称为“Cocoa框架”,事实上Cocoa本身是一个框架的集合,它包含了众多子框架,其中最重要的要数“Foundation”和“UIKit”。前者是框架的基础,和界面无关,其中包含了大量常用的API;后者是基础的UI类库,以后我们在IOS开发中会经常用到。这两个框架在系统中的位置如下图: 其实所有的Mac OS X和IOS程序都是由大量的对象构成,而这些对象的根对象都是NSObject

iOS中关于json解析的5中方式

元气小坏坏 提交于 2020-03-07 21:37:13
作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式。 有的json代码格式比较混乱,可以使用 此“http://www.bejson.com/”网站来进行JSON格式化校验( 点击打开链接 )。此网站不仅可以检测Json代码中的错误,而且可以以视图形式显示json中的数据内容,很是方便。 从IOS5开始,APPLE提供了对json的原生支持(NSJSONSerialization),但是为了兼容以前的ios版本,可以使用第三方库来解析Json。 本文将介绍TouchJson、 SBJson 、JSONKit 和 iOS5所支持的原生的json方法,解析国家气象局API,TouchJson和SBJson需要下载他们的库 TouchJson包下载: http://download.csdn.net/detail/enuola/4523169 SBJson 包下载: http://download.csdn.net/detail/enuola/4523177 JSONKit包下载:http://download.csdn.net/detail/enuola/4523160 下面的完整程序源码包下载:http://download.csdn.net/detail/enuola/4523223 PS: 国家气象局提供的天气预报接口 接口地址有三个: http:/

IOS 中的 AppDelegate.m/h

好久不见. 提交于 2020-02-29 14:28:42
IOS 中的 AppDelegate.m/h 文件是很重要的,因为它是对 Application 的整个生命周期进行管理的。 先明白,每个iPhone应用程序都有一个UIApplication,UIApplication是iPhone应用程序的开始并且负责初始化并显 示 UIWindow,并负责加载应用程序的第一个UIView到UIWindow窗体中。UIApplication的另一个任务是帮助管理应用程序的 生命 周期,而UIApplication通过一个名字为UIApplicationDelegate的代理类来履行这个任务。尽管 UIApplication 会负责接收事件,而UIApplicationDelegate则决定应用程序如何去响应这些事 件,UIApplicationDelegate可以处理 的事件包括应用程序的生命周期事件(比如程序启动和关闭)、系统事件(比如来电、记事项警 告),本文会介绍如何加载应用程序的UIView到 UIWindow以及如何利用UIApplicationDelegate处理系统事件。 通 常对于UIApplication读者是没必要修改它的,只需要知道UIApplication接收系统事件即可,而如何编写代码来处理这些系统事件 则 是程序员的工作。处理系统事件需要编写一个继承自UIApplicationDelegate接口的类,而

NSData NSDate NSString NSArray NSDictionary 相互转化

混江龙づ霸主 提交于 2020-02-26 13:31:18
// NSData NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; NSData *data = [string dataUsingEncoding:NSUTF 8StringEncoding]; NSArray *array = [NSArray arrayWithObjects: @"1", @"2", @"3", nil]; NSString *dateString = @"19891123"; NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: @"hello", @"word", @"chen", @"lu", @"jin", @"mei", @"cerastes", @"hehe", nil]; // NSString to NSData NSData *string 2data = [string dataUsingEncoding:NSUTF 8StringEncoding]; NSLog( @"%@",string 2data); // NSData to NSString NSString *data 2String = [[NSString alloc]initWithData

NSDictionary keys with @ symbol

痴心易碎 提交于 2020-02-25 05:34:30
问题 Like asked here before Using valueForKeyPath on NSDictionary if a key starts the @ symbol? If i have to use NSDictionary with keys like "@ID" and "@Name" (Server side limitations,I have no control over the naming) how can i work around that? Right now the app just crash every time I'm trying to access to this kind of keys. 回答1: As already stated you cannot do this. To Paraphrase Apple Docs reg. Key format - Keys must use ASCII encoding, begin with a lowercase letter, and may not contain

NSDictionary keys with @ symbol

て烟熏妆下的殇ゞ 提交于 2020-02-25 05:33:00
问题 Like asked here before Using valueForKeyPath on NSDictionary if a key starts the @ symbol? If i have to use NSDictionary with keys like "@ID" and "@Name" (Server side limitations,I have no control over the naming) how can i work around that? Right now the app just crash every time I'm trying to access to this kind of keys. 回答1: As already stated you cannot do this. To Paraphrase Apple Docs reg. Key format - Keys must use ASCII encoding, begin with a lowercase letter, and may not contain