Swift-「Bool」は「Void」のサブタイプではありませんか?

aryaxt

次のエラーが発生します:「Bool」は「Void」のサブタイプではありません

performBlockは引数のないvoidクロージャを取り、メソッド自体には1つの引数があるため、クロージャに次の構文を使用できるはずです。なぜこのコンパイルエラーが発生するのですか?

workingManagedObjectContext.performBlock {
    self.workingManagedObjectContext.save(nil)

    self.managedObjectContext.performBlock {
       self.managedObjectContext.save(nil)
    }
}
マーティンR

toの引数performBlockは、引数をとらず、Voidを返す(つまり、戻り値がない)クロージャです。クロージャが単一の式構成されている場合、戻り値の型はその式の型から推測されます。の種類

self.managedObjectContext.save(nil)

Bool、暗黙的にに変換することはできませんVoidこの問題を修正するには、明示的なreturnステートメントを追加します。

self.managedObjectContext.performBlock {
    self.managedObjectContext.save(nil)
    return
}

または(より良い)、saveそれを無視するのではなく操作の戻り値を確認してください:

self.managedObjectContext.performBlock {
    var error : NSError?
    if !self.managedObjectContext.save(&error) {
        // report error
    }
}

(そして、外側のレベルの保存についても同じことを行います)。


更新: Swift 1.2(Xcode 6.3)以降、Void以外の戻り値の型を持つ注釈のない単一式クロージャをVoidコンテキストで使用できるようになりました。したがって、これはエラーなしでコンパイルされます。

self.managedObjectContext.performBlock {
    self.managedObjectContext.save(nil)
    // explicit "return" not needed anymore in Swift 1.2
}

(もちろん、実際に保存操作からの戻り値を確認することをお勧めします。)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

「NSString」は、Swift ViewControllerの「UILAbel」のサブタイプではありません

分類Dev

swift-'(AnyObject)'は 'NSObject'のサブタイプではありません

分類Dev

Swift:NSNumberはUIViewAnimationCurveのサブタイプではありません

分類Dev

Swift- [NSObject:AnyObject]! ' 'Dictionary <String、AnyObject>のサブタイプではありません

分類Dev

swift3のコンパイルエラー:「AnyObject」は「NSObject」のサブタイプではありません

分類Dev

Swift:NSNumberをNSStringに変換します(NSNumberはNSStringのサブタイプではありません)

分類Dev

Swift継承関数の戻り値の型をサブタイプにすることはできません

分類Dev

Swift 3'encode 'は' Void '(別名'() ')を生成しますが、予期されるコンテキスト結果タイプXYZではありませんか?

分類Dev

Swift 2:タイプ「Bool」の式パターンはタイプ「Int」の値と一致できません

分類Dev

Swiftのオプションではないタイプにオプションを含めるべきではありませんか?

分類Dev

Swift 3私のtableViewはpopulatinGではありませんか?

分類Dev

タイプ「UnsafeMutableRawPointer」の値には添え字がありませんSwift5

分類Dev

タイプ ''の値にはswiftにメンバー ''がありません

分類Dev

タイプ「SKNode」のSwift値にはメンバー「particleBirthRate」がありません

分類Dev

Swiftは、式のタイプ「Void」をタイプ「String!」に変換できません。

分類Dev

タイプ「bool」は、「関数結果」のタイプ「List <bool>」のサブタイプではありません

分類Dev

Flutter: 'Future <dynamic>'はbool型のサブタイプではありません

分類Dev

Swiftでダブルタイプの数制限を増やす方法はありますか?

分類Dev

SwiftのHomeKit完了ブロック:式のタイプ「Void」をタイプ「String!」に変換できません

分類Dev

エラー:タイプ 'ObjCBool'の値をSwift4.1.2では期待される引数タイプ 'Bool'に、Ubuntu16.04ではKituraに変換できません

分類Dev

Swift:SKNodeにはオプションのタイプが必要ですが、オプションのメンバーにはメンバーがありません

分類Dev

Swift:SKNodeにはオプションのタイプが必要ですが、オプションのメンバーにはメンバーがありません

分類Dev

フラッター:タイプ「bool」はタイプ「double」のサブタイプではありません

分類Dev

タイプ () の値を期待される引数タイプ bool (Swift) に変換できませんか?

分類Dev

Alamofireタイプ 'ParameterEncoding'にはメンバーがありません 'URL' Swift 3

分類Dev

Swift 4.1:タイプ「String」にはメンバー「foregroundColor」がありません

分類Dev

Swift:タイプ「Any」の値をタイプ「AnyObject?」の値に割り当てることはできません。

分類Dev

Swiftに「プライベートinit」はもうありませんか?

分類Dev

タイプ 'swift.bool.type'の値をswift.boolにキャストできませんでした

Related 関連記事

  1. 1

    「NSString」は、Swift ViewControllerの「UILAbel」のサブタイプではありません

  2. 2

    swift-'(AnyObject)'は 'NSObject'のサブタイプではありません

  3. 3

    Swift:NSNumberはUIViewAnimationCurveのサブタイプではありません

  4. 4

    Swift- [NSObject:AnyObject]! ' 'Dictionary <String、AnyObject>のサブタイプではありません

  5. 5

    swift3のコンパイルエラー:「AnyObject」は「NSObject」のサブタイプではありません

  6. 6

    Swift:NSNumberをNSStringに変換します(NSNumberはNSStringのサブタイプではありません)

  7. 7

    Swift継承関数の戻り値の型をサブタイプにすることはできません

  8. 8

    Swift 3'encode 'は' Void '(別名'() ')を生成しますが、予期されるコンテキスト結果タイプXYZではありませんか?

  9. 9

    Swift 2:タイプ「Bool」の式パターンはタイプ「Int」の値と一致できません

  10. 10

    Swiftのオプションではないタイプにオプションを含めるべきではありませんか?

  11. 11

    Swift 3私のtableViewはpopulatinGではありませんか?

  12. 12

    タイプ「UnsafeMutableRawPointer」の値には添え字がありませんSwift5

  13. 13

    タイプ ''の値にはswiftにメンバー ''がありません

  14. 14

    タイプ「SKNode」のSwift値にはメンバー「particleBirthRate」がありません

  15. 15

    Swiftは、式のタイプ「Void」をタイプ「String!」に変換できません。

  16. 16

    タイプ「bool」は、「関数結果」のタイプ「List <bool>」のサブタイプではありません

  17. 17

    Flutter: 'Future <dynamic>'はbool型のサブタイプではありません

  18. 18

    Swiftでダブルタイプの数制限を増やす方法はありますか?

  19. 19

    SwiftのHomeKit完了ブロック:式のタイプ「Void」をタイプ「String!」に変換できません

  20. 20

    エラー:タイプ 'ObjCBool'の値をSwift4.1.2では期待される引数タイプ 'Bool'に、Ubuntu16.04ではKituraに変換できません

  21. 21

    Swift:SKNodeにはオプションのタイプが必要ですが、オプションのメンバーにはメンバーがありません

  22. 22

    Swift:SKNodeにはオプションのタイプが必要ですが、オプションのメンバーにはメンバーがありません

  23. 23

    フラッター:タイプ「bool」はタイプ「double」のサブタイプではありません

  24. 24

    タイプ () の値を期待される引数タイプ bool (Swift) に変換できませんか?

  25. 25

    Alamofireタイプ 'ParameterEncoding'にはメンバーがありません 'URL' Swift 3

  26. 26

    Swift 4.1:タイプ「String」にはメンバー「foregroundColor」がありません

  27. 27

    Swift:タイプ「Any」の値をタイプ「AnyObject?」の値に割り当てることはできません。

  28. 28

    Swiftに「プライベートinit」はもうありませんか?

  29. 29

    タイプ 'swift.bool.type'の値をswift.boolにキャストできませんでした

ホットタグ

アーカイブ