2017-01-13 6 views
1

Xcode 8.1.2を使用してコード行を編集しているとき、2つの問題が発生しました。問題を解決するのを手伝ってください。 「6未解決の識別子 'join'と 'array'は利用できません

func countryFromFilename(_ filename: String) -> String { 
     var name = filename.components(separatedBy: "-")[1] 
     let length: Int = name.characters.count 
     name = (name as NSString).substring(to: length - 4) 
     let components = name.components(separatedBy: "_") 
     return join(" ", components) 
    } 

2.'array: '参加' 未解決識別子の

  1. 使用は

のXcode 8.1.2は未解決の識別子 '参加' のコードの ラインの使用を示し、使用できません:Arrayイニシャライザを代わりに使用してください。コードの ライン:上記のコメントをまとめると、事前に1人の

 if model.regions.values.array.filter({$0 == true}).count == 0 { 
      model.toggleRegion(regionNames[defaultRegionIndex]) 
      switches[defaultRegionIndex].isOn = true 
      displayErrorDialog() 

おかげで、

マイク

+0

最初のものでは、returnステートメントは、呼び出されたスコープでは使用できない 'join(_:、_ :)'メソッドにアクセスしようとしています(これは既知の標準関数)。 – dfri

+0

'join'は古代スイフト版のグローバル関数でした(私は思う)。 Swift 3. –

+0

で 'components.joined(separator:" ")'が必要で、おそらく 'Array(models.regions.values).filter(...' – dfri

答えて

0

(:)の配列を連結する スウィフト3にはグローバルjoin機能はありません文字列、使用

components.joined(separator: " ") 

次に、「『配列』は使用できません。代わりに、配列初期化子を使用してください」しかし、配列を作成する必要はありません

model.regions.values.array 

Array(model.regions.values) 

なければならないことを意味し、あなたは をフィルタリングすることができますvalues配列直接:

if model.regions.values.filter({$0 == true}).count == 0 

if !model.regions.values.contains(true) 
+0

あなたの大きな助けをありがとう!!! components.joined(セパレータ:" ")はうまくいきます –

+0

@MikeChen:あなたも大歓迎です - もしこの答えがあなたの問題を解決すればチェックマークをクリックすることで*受け入れることができます。 –

関連する問題