ios使用jspatch中需要注意的事项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios使用jspatch中需要注意的事项相关的知识,希望对你有一定的参考价值。
第一份代码,为了纠正原代码不显示29号的bug,先上代码
1 require(‘NSString‘,‘MCDatePickType‘,‘NSMutableArray‘,‘UIButton‘); 2 3 defineClass(‘MMCDatePickView‘,{ 4 5 setDatePickViewSelected: function() { 6 7 self.setSelectedYearRow(self.yearArray().indexOfObject(self.currentYearString())); 8 self.setSelectedDayRow(self.DaysArray().indexOfObject(self.currentDayString())); 9 self.setSelectedHourRow(self.hoursArray().indexOfObject(self.currentHourString())); 10 self.setSelectedMinuteRow(self.minutesArray().indexOfObject(NSString.stringWithFormat("%@分", self.currentMinuteString()))); 11 12 13 // 设置年和月 14 var MonthAndYear = self.currentYearString().toJS() + ‘年‘ + self.currentMonthString().toJS() + ‘月‘; 15 16 if (self.type() === 0) { 17 18 19 for (var i = 0; i < self.yearArray().count(); i++) { 20 21 var jsArray = self.yearArray().toJS(); 22 var year = jsArray[i]; 23 if (year == self.currentYearString().toJS()) { 24 25 self.datePickView().selectRow_inComponent_animated(i, 0, YES); 26 27 break; 28 } 29 } 30 31 32 } 33 else { 34 35 36 self.setSelectedMonthRow(self.yearAndMonthArray().indexOfObject(MonthAndYear)); 37 self.datePickView().selectRow_inComponent_animated(self.selectedMonthRow(), 0, YES); 38 39 40 if (self.type() !== 0 && self.type() !== 1 && self.type() !== 5) { 41 self.datePickView().selectRow_inComponent_animated(self.selectedDayRow(), 1, YES); 42 } 43 44 45 //选中小时 46 if (self.type() === 3 || self.type() === 4) { 47 self.datePickView().selectRow_inComponent_animated(self.selectedHourRow(), 2, YES); 48 } 49 50 //选中分 51 if (self.type() === 4) { 52 self.datePickView().selectRow_inComponent_animated(self.selectedMinuteRow(), 3, YES); 53 } 54 55 56 // 选中自定义的 57 if (self.type() === 5) { 58 self.datePickView().selectRow_inComponent_animated(self.customerIndex(), 0, YES); 59 } 60 } 61 } 62 });
注意事项:
1.在对字符或者数组,字典操作的时候应该转成js的字符串或者字典,等等
1 var MonthAndYear = self.currentYearString().toJS() + ‘年‘ + self.currentMonthString().toJS() + ‘月‘;
上边的代码是正确的,MonthAndYear 就是js格式的字符串,下边的是不对的:
var MonthAndYear = self.currentYearString() + ‘年‘ + self.currentMonthString() + ‘月‘;
2.在进行比较的时候,使用相同类型,js的数据类型和oc的不一样
1 var jsArray = self.yearArray().toJS(); 2 var year = jsArray[i]; 3 if (year == self.currentYearString().toJS()) { 4 5 self.datePickView().selectRow_inComponent_animated(i, 0, YES); 6 7 break; 8 }
3.js 是弱类型语言,不强调类型,oc的枚举在js中不好使,
1 self.type() === 0
最终还是把枚举转成了基本数据类型
以上是关于ios使用jspatch中需要注意的事项的主要内容,如果未能解决你的问题,请参考以下文章
ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入和使用.js文件传输加解密
[iOS] JSPatch 和 Aspects 兼容问题研究