私有成员变量获取与修改,及数组的获取与修改
栗子: 账户页面列表中,由于上新版本时中间插入了一行,但是忘记了最后一行的赋值,所以需要对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