===================用于长期记录iOS开发中遇到的问题和解决方法===================
1.JSON文件解析错误 ===========================================
JSON文件内容:[{"status":1}]
问题 :取出status == nil
解决:获得数组后,取出为字典类型,再进行读取
NSArray *arrayLoginJSON = [NSJSONSerialization JSONObjectWithData:[content dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil];
NSDictionary *dict = [arrayLoginJSON objectAtIndex:0];
NSNumber *num = [dict objectForKey:@"status"];
NSLog(@"status == %@",num);
输出为1
2.NSMutableArray循环添加对象,覆盖问题 ===========================================
问题:对NSMutableArray赋值后,输出,只有最后一个对象的信息
原因:JWdataModels *dataModel = [[JWdataModels alloc] init];应该写在for循环里面,不然只是咋外面创建了一个对象,放到里面就会创建自己的对象
JWdataModels *dataModel = [[JWdataModels alloc] init];
//self.array中有4个字典对象
for (NSDictionary *dict in self.array) {
dataModel.hydrant_id = [dict objectForKey:@"hydrant_id"];
dataModel.area_id = [dict objectForKey:@"area_id"];
dataModel.node_id = [dict objectForKey:@"node_id"];
dataModel.address = [dict objectForKey:@"address"];
[self.dataModelArray addObject:dataModel];
}self.childViewControllers为可变数组
for (int i =0; i<4; i++) {
UIViewController *vc = [[UIViewController alloc] init];
vc.view.backgroundColor = [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1];
[self.childViewControllers addObject:vc];
}
解决:没有初始化数组,需要初始化后才能使用
self.childViewControllers = [NSMutableArray array];
5.#define WeakSelf __weak typeof(self) weakSelf = self;在block或懒加载防止循环引用
__weak __typeof(&*self)weakSelf = self;
__weak __typeof(&*self)weakSelf = self;
__weak __typeof(&*self)weakSelf = self;