枚举由字典元素组成的数组时,我无法修改字典值

时间:2015-07-20 04:08:03

标签: arrays swift dictionary

$timeDiff = strtotime($itInfo['endTime']) - strtotime($itInfo['startTime']);

echo substr('00'.($timeDiff / 3600 % 24),-2)
    .':'. substr('00'.($timeDiff / 60 % 60),-2)
    .':'. substr('00'.($timeDiff % 60),-2);

当我调试代码时,"选择" f的属性设置正确。但文件中的相应元素保持不变。为什么?感谢。

2 个答案:

答案 0 :(得分:0)

我不确定在这里使用NSMutableArray会发生什么......但也许它的工作方式类似于值类型而不是引用类型。尝试使用修改后的版本替换数组中的项目。

files.replaceObjectAtIndex(i, withObject: f)

在您进行修改后放置它。

var files = NSMutableArray()
//...
for (var i = 0; i < files.count; i++) {
    var f = files[i] as! [String: AnyObject]
    f["selected"] = true
    files.replaceObjectAtIndex(i, withObject: f)
}

如果你使用的是swift数组类型,那么这样的东西应该可以工作。

var files = [[String: AnyObject]]()

//...
for (var i = 0; i < files.count; i++) {
    var f = files[i] as [String: AnyObject]
    f["selected"] = true
    files[i] = f;
}

答案 1 :(得分:0)

文件的相应元素没有改变的原因是你根本不修改它只是在循环中改变 var f 的值。

试试这段代码:

    var files = [Dictionary<String,AnyObject>]()
    // Probably you are trying to make array of dictionary objects 
    for var i = 0; i < 10 ; i++ {
        files[i]["selected"] = true
    }