问题:调用sortDeviceOrGroupWithOrderList给家庭下的设备进行排序,再次取家庭设备列表后,数组顺序没有变化,百思不得其解
解决方法:调用sortDeviceOrGroupWithOrderList后,返回数据的TuyaSmartDeviceModel.homeDisplayOrder发生了变化,通过homeDisplayOrder对数组重新排序即可
返回的homeDisplayOrder打印出来是这样的
Code: Select all
2022-11-25 17:30:12.755647+0800 tuya-bizbundle-ios-sample-objc_Example[92430:2936564] 6
2022-11-25 17:30:12.755838+0800 tuya-bizbundle-ios-sample-objc_Example[92430:2936564] 5
2022-11-25 17:30:12.755937+0800 tuya-bizbundle-ios-sample-objc_Example[92430:2936564] 4
2022-11-25 17:30:12.756020+0800 tuya-bizbundle-ios-sample-objc_Example[92430:2936564] 3
2022-11-25 17:30:12.756087+0800 tuya-bizbundle-ios-sample-objc_Example[92430:2936564] 2
2022-11-25 17:30:12.756181+0800 tuya-bizbundle-ios-sample-objc_Example[92430:2936564] 1
2022-11-25 17:30:12.756253+0800 tuya-bizbundle-ios-sample-objc_Example[92430:2936564] 0
2022-11-25 17:30:12.756327+0800 tuya-bizbundle-ios-sample-objc_Example[92430:2936564] 7
homeDisplayOrder是int类型,遍历deviceList,把homeDisplayOrder当作index塞进数组即可完成排序,然后展示即可
排序代码可以参考
Code: Select all
NSMutableArray *sortDeviceArr = [NSMutableArray new];
for (int i=0; i<self.home.deviceList.count; i++) {
for (int j=0; j<self.home.deviceList.count; j++) {
if (self.home.deviceList[j].homeDisplayOrder == i) {
[sortDeviceArr addObject:self.home.deviceList[j]];
break;
}
}
}
原因:开始觉得这种奇怪的设计难以理解,后来想想他是把排序的算力分发到了设备端,不然每次从数据库取的时候用order by排序都要消耗一次云端算力,可能是获取设备列表的请求太频繁了吧,android应该也是这样设计的,可以参考这个思路