假设我有两个共同的包裹
“基本套餐”和“高级套餐”。
还有两个 View 。第一个显示当前包,另一个显示可用包。
例如,假设我当前的计划是基本包,我切换到高级包。那么,当前包将是高级包,可用计划将是基本包。每次切换包异步和获取包过程都会执行它调用。意味着在我单击切换按钮后,它在服务器上切换包,然后在成功切换包以更新两个 View 后返回当前包状态。
所以,我确实有一个问题,我正在使用选择器 View 来显示可用的包。但是,在切换计划并获得最新计划后,它在可用包中显示 ["Basic Package","Advance Package"]。实际上在当前 View 切换到 ["Advance Package"] 后,它应该只显示一个可用的包 ["Basic Package"]。
var basePackage : Results<PlanList>!
var availablePackage : [String] = []
func removeDuplicates(array: [String]) -> [String] {
var encountered = Set<String>()
var result: [String] = []
for value in array {
if encountered.contains(value) {
// Do not add a duplicate element.
}
else {
// Add value to the set.
encountered.insert(value)
// ... Append the value.
result.append(value)
}
}
return result
}
func getLatestAvailablePackages(){
basePackage = realm.objects(PlanList).filter("currentPackage = '0'") // Current Packages 0 means inactive available packages
if basePlan.count > 0{
for var i = 0 ; i < basePlan.count ; i++ { // Getting available packages and insert at switchArray to show at picker
availablePackage.insert(basePackage[i].packageName, atIndex: i)
}
availablePackage = removeDuplicates(availablePackage)
}
}
// After it complete switching plan at server,getting latest plan will do for updating the two views
func didSuccessGettingPlan(results: JSON) {
// Insertion into realm database after it get the packages of user subscribe / "0" means available package and "1" mean current subscribe package.
//self.realmDBHelper.insertPackages(results)
getLatestAvailablePackages()
}
流程很清楚。如果用户想要更改包,则更新两个 View 和选择器的选择值。
有什么帮助吗?
为什么在用户从 Basic 切换到 Advance 后我的 availablePackage 是 ["Basic Package","Advance Package"]。实际上它应该是 availablePackage 数组中的 ["Basic Package"]。对我的愚蠢逻辑有帮助吗?
最佳答案
func getLatestAvailablePackages() {
availablePackage.removeAll()
//...
}
关于ios - 数组数据插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35714755/