2017-02-18 3 views
0

Swift 3に書き込まれていないSwift 2.2 iOSアプリケーションを移行しようとしています。モデルを取得して配列に戻すために、 。これらはすべてSwift 2.xで動作しましたが、Swift 3では以下のエラーが発生しています。関連する関数定義も含まれています。タイプ を返すためにタイプ のリターン 表現を変換できません 'LazyFilterBidirectionalCollection>' '[EntryModel]''LazyFilterBidirectionalCollection>型のリターン式を変換できません。

func validateSubmission(_ submissionId: Int) -> ([EntryModel]) { 
    let realm = try! Realm() 

    let submissionModel = realm.objects(SubmissionModel.self).filter({ $0.id == submissionId }).first! 

    let entryModels = submissionModel.entryModels 

    // Check for all entry details field which are mandatory and are empty and not hidden 
    let emptyEntryModels = entryModels.filter({ $0.entryDetailArray.filter({ $0.entryDetailValue.isEmpty && $0.isMandatory && !($0.isHidden) }).count > 0 }) 

    return emptyEntryModels 
} 

私はよく分からない:

/SubmissionDataManager.swift:184:16実際の問題とは何か、それをどうやって修正するのか、ということです。任意の提案が高く評価されました。

+0

あなたの依存関係を管理するために何を使用していますか?私はあなたがこのようなカップルの質問をしていることに気づいた。 CocoaPods – Pierce

+0

を使用して 'return Array(emptyEntryModels)'を試している場合、あなたのポッドファイルがSwift 3用に更新されていることを確認してください。それでも動作しない場合は、 'EntryModel 'として' return Array(emptyEntryModels) 'を試してください。 – vacawama

+0

@vacawama、 'return Array(emptyEntryModels)'が機能しました!あなたが望むなら、これを答えとして加えてください。 – Lastmboy

答えて

1

スウィフトは効率のために配列の作成を延期しています。配列を与える代わりに、LazyFilterBidirectionalCollectionを提供しています。これは、述語を満たす基になるコレクションの要素を含む怠惰なCollectionラッパーです。あなたのケースでは、filterに渡されたクロージャを満たすのはレルム要素です。 Lazyは、Realmから一度にすべてにアクセスするのではなく、その値にアクセスする際に値が取得されることを意味します。 Collectionは、SequenceおよびIndexableに従うプロトコルです。 Sequenceは、要素への順次反復アクセスを提供する型です。したがって、最も基本的なレベルでは、LazyFilterBidirectionalCollectionがシーケンスです。あなたは本当の配列を返す必要がありますので

init<S : Sequence where S.Iterator.Element == Element>(_ s: S) 

を置き換える:

return emptyEntryModels 

と:

配列に Sequenceを変換 Arrayの初期化子があり

return Array(emptyEntryModels) 

これはLazyFilterBidirectionalCollectionから適切な配列を作成します。配列に列を変換するために、このArray初期化子を使用しての


その他の例:

let digits = Array(0...9)        // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
let odds = Array(stride(from: 1, through: 9, by: 2)) // [1, 3, 5, 7, 9] 
関連する問題