在简单循环中赋值时的奇怪偏差

时间:2014-06-25 20:09:59

标签: ios swift

class func generatePuzzle(manager: MDLTileManager, withGivens givens:Array<Int>, atPositions positions:Array<TileIndexPath>){
    NSLog("\(givens.count), \(positions.count)");
    //Doesn't work
    for index in 0...positions.count-1{
        //Original code before anomaly:
        //var tileindex = positions[index].toIndex();
        //manager.tiles[tileindex].isGiven == true;

        //New code added to test anomaly:
        manager.tiles[index].currentValue == 8;
    }
    //Works
    for index in 0...positions.count-1{
        manager.tiles[index].currentValue = 8
    }

    for index in 0...manager.tiles.count-1{
        manager.tiles[index].currentValue = 8;
        manager.tiles[index].isGiven = true;
    }
}

此片段中的第一个for循环昨天工作正常。今天它没有像它想象的那样更新模型。我无法弄清楚这个问题所以我只是试图通过使用日志和代码片段来强制它。

正如您所看到的,所有for循环都是相同的,但第一个for循环不会像其他两个那样更新模型。知道这是怎么回事吗?

MDLTileManager只是一个包含我的Sudoku Tiles数据的Array的包装类。 这是tile模型的相关代码

struct TileModel {
    var ID = 0;
    var currentValue = 0;
    var solutionValue = 0;
    var possibleValues = Array<Int>();
    var isGiven = false;
    var isHighlighted = false;
    func isCorrect() -> Bool{
        return (solutionValue != 0) && (currentValue == solutionValue);
    }

    init(ID: Int, currentValue current: Int, solutionValue solution: Int, isGiven given:Bool, isHighlighted highlighted:Bool){
        self.ID = ID;
        self.currentValue = current;
        self.solutionValue = solution;
        self.isGiven = given;
        self.isHighlighted = highlighted;
    }   
}

0 个答案:

没有答案