2017-07-02 81 views
0

幫助解決這個swift 3錯誤。我們試圖以某種方式存儲每個短語中的字符數,在這種情況下,根據來自https://www.raywenderlich.com/77981/make-letter-word-game-uikit-swift-part-1的數據源將其存儲爲anagram1length和anagram2length。這裏值得關注的是在迅速3的代碼如下兩行給我們一個錯誤使用未解決的標識符「計數」的:在Swift 3中使用未解析的標識符進行數據存儲

let anagram1length = count(anagram1) 
let anagram2length = count(anagram2) 

從以下功能:

func dealRandomAnagram() { 
    //1 
    assert(level.anagrams.count > 0, "no level loaded") 

    //2 
    let randomIndex = randomNumber(minX:0, maxX:UInt32(level.anagrams.count-1)) 
    let anagramPair = level.anagrams[randomIndex] 

    //3 
    let anagram1 = anagramPair[0] as! String 
    let anagram2 = anagramPair[1] as! String 

    //4 
    let anagram1length = count(anagram1) 
    let anagram2length = count(anagram2) 

    //5 
    print("phrase1[\(anagram1length)]: \(anagram1)") 
    print("phrase2[\(anagram2length)]: \(anagram2)") 

    //calculate the tile size 
    let tileSide = ceil(ScreenWidth * 0.9/CGFloat(max(anagram1length, anagram2length))) - TileMargin 

    //get the left margin for first tile 
    var xOffset = (ScreenWidth - CGFloat(max(anagram1length, anagram2length)) * (tileSide + TileMargin))/2.0 

    //adjust for tile center (instead of the tile's origin) 
    xOffset += tileSide/2.0 

    //initialize target list 
    targets = [] 

    //create targets 
    for (index, letter) in anagram2length.enumerate(anagram2) { 
     if letter != " " { 
     let target = TargetView(letter: letter, sideLength: tileSide) 
     target.center = CGPointMake(xOffset + CGFloat(index)*(tileSide + TileMargin), ScreenHeight/4) 

     gameView.addSubview(target) 
     targets.append(target) 
     } 
    } 

回答

1

教程顯然是寫在舊的Swift版本。

在目前的斯威夫特3版本中,它通常是

let anagram1length = anagram1.characters.count 
let anagram2length = anagram2.characters.count 
+0

這是真的。但是,這種解決方案在這種情況下不起作用。如果我使用你的建議,那麼'anagram2length.enumerate(anagram2)'中的'(index,letter)'這行'失敗。 –

+0

如果您將整個代碼翻譯爲當前的Swift版本,它會有所幫助。你可能是指在anagram2.characters.enumerated()'中爲(索引,字母)。你的語法'anagram2length.enumerate(anagram2)'甚至不能在舊的Swift版本中編譯。 – vadian

+0

將整個函數轉換爲Swift 3工作。謝謝。 –

相關問題