私有成员变量获取与修改,及数组的获取与修改
栗子: 账户页面列表中,由于上新版本时中间插入了一行,但是忘记了最后一行的赋值,所以需要对tableView数据源的最后一行数据进行修改,及刷新表单。当然不能修改其他数据
- (void)myAccountInfoHandle:(NSInteger)code responseObject:(id)responseObject { //先执行原有方法的内容 if (code == 0) { _dataSource[5] = responseObject[@"data"][@"amount"]; [_tableView reloadData]; } }
oc代码如此简单,下面js 坑的地方,主要是数据源数组、表单都是私有变量
defineClass('MyAccountVC', { myAccountInfoHandle_responseObject: function(code, responseObject) {
//调用原有方法
self.ORIGmyAccountInfoHandle_responseObject(code,responseObject);
if (code == 0) {
//数据正常时,才进行赋值刷新操作
var data = self.valueForKey('_dataSource');
//获取私有变量数组
var acc = responseObject.valueForKey('data');//获取字典
//先获取字典中的amount值,然后替换数组中第5个元组
data.replaceObjectAtIndex_withObject(5,acc.objectForKey('amount'));
var mytable = self.valueForKey('_tableView');
//获取私有变量tableView
mytable.reloadData();//刷新表单
}
}
}, {});
另一种方法,插入一条数据在第一个,删除最后一条数据
- (void)myAccountInfoHandle:(NSInteger)code responseObject:(id)responseObject { //先执行原有方法的内容 if (code == 0) { [_dataSource insertObject:@"" atIndex:0]; [_dataSource removeLastObject]; [_tableView reloadData]; } }
defineClass('MyAccountVC', { myAccountInfoHandle_responseObject: function(code, responseObject) {
//调用原有方法
self.ORIGmyAccountInfoHandle_responseObject(code,responseObject);
if (code == 0) {
//数据正常时,才进行赋值刷新操作
var data = self.valueForKey('_dataSource');
//获取私有变量数组
data.data.insertObject_atIndex('',0);
//插入元素到第一个
data.removeLastObject();
//删除数组最后一个元素
var mytable = self.valueForKey('_tableView');
//获取私有变量tableView
mytable.reloadData();
//刷新表单
}
}
}, {});
2022-08-01 07:46:33