×

stringwithformat

stringwithformat(stringwithformat方法)

admin admin 发表于2023-04-09 18:55:08 浏览67 评论0

抢沙发发表评论

本文目录一览:

OC可变参数问题?? 大神请进! stringWithFormat:……

您好,如果您使用XCODE查看,您会发现NS_FORMAT_FUNCTION(1,2)是红颜色的字体,说明这是一个宏定义,它的作用是判定当您输入参数和不输入参数时,这个方法仍然可用

当您访问宏的时候,您就已经有些接近底层代码了,而再往下这个方法的源代码或者如何实现的您可能无法访问,一般来说不建议您去刨根问底弄明白OC中的源代码,因为OC不是开源语言

stringWithFormat 和 initWithFormat 有何不同

1、initWithFormat是实例办法

只能经由过程 NSString* str = [[NSString alloc] initWithFormat:@"%@",@"Hello World"] 调用,然则必须手动release来开释内存资料-stringwithformat

2、stringWithFormat是类办法

可以直接用 NSString* str = [NSString stringWithFormat:@"%@",@"Hello World"] 调用,内存经管上是autorelease的,不消手动显式release-stringwithformat

+ stringWithFormat:

类方法,返回一个autorelease的NSString实例,不用手动Release,在自动释放池中会自动释放。

initWithFormat:

实例方法,返回一个自己Alloc申请内存的NSString实例,根据OC内存管理黄金法则,管杀管埋,它则需要自己手动Release。

因为这两个方法只是在没有使用ARC的时候有所不同,一个需要手动Release一个则是自动进入autoreleasepool,所以在使用ARC的时候他们俩几乎没有什么区别。

请教关于stringWithFormat的作用

作用就是返回一些这个类特定的实例,比如字符串的[NSString stringWithFormat:@""];这个类方法,作用就是返回一串自定义的字符串,用法和[NSString alloc]...

ios JSON解析常见错误

iOS现有Json解析框架+ ( id)JSONObjectWithData:options: error:

不支持对非标准格式Json的处理(特殊字符包括“\“ 、 ”\n“、 ”\r“等)

如:

处理办法:1、将带有转义字符的数据转成字典(标准的JSON格式)再进行解析

2、用“\“进行转义

方案解决:

1。「 从根源上与API协调,尽量禁止返回值为NSNULL、null、nil这样的值。

2。「 客户端做处理,处理值为NSNULL、null、nil的情况。或者对消息进行转发 避免由于返回值有误导致程序崩溃的情况

问题:

前后端编码不一致导致解析后的值乱码、解析不了json数据、报错等。

解决方案:1、与后台规定好统一编码;2、客户端进行编码转换;

问题:

JSON数据中的浮点型值,用系统方法NSJSONSerialization

解析为字符串后,出现精度误差

解决方案:

1。「 后台以字符串形式返回

2。「 解析时数据格式化,明确转成doubleValue类型,如下:

NSString *value=[NSString stringWithFormat:@"%f",[dic[@"number"] doubleValue]];

如下数据解析

json局部数据这样的:{"content_id" : "666"}

NSString name = dic[@"content_id"]; 这句会产生类型错误

虽然是"666"这样的数字字符串,但还是要当成id类型stringWithFormat一下

NSString name = [NSString stringWithFormat:@"%@",dic[@"content_id"]];

如果JSON数据的key值为非String类型用NSJSONSerialization

解析会找不到key而报错:

BOOL manage = [content objectForKey:@"manage"];

上面结果无论JSON数据中manage字段是0还是1,manage都为YES。

用BOOL接收JSON字段时,需要增加boolValue转换:

BOOL manage = [[content objectForKey:@"manage"] boolValue];