Swift 4.2とXcode10ベータ版を使用すると、次のように記述できます。
import UIKit
let foo: UIEdgeInsets = .zero
次に、コンパイル時に致命的なエラーが発生します。
*** DESERIALIZATION FAILURE (please include this section in any bug report) ***
result is ambiguous
0 Swift 0x000000010784fc5a PrintStackTraceSignalHandler(void*) + 42
1 Swift 0x000000010784f066 SignalHandler(int) + 966
2 libsystem_platform.dylib 0x00007fff62a5ef5a _sigtramp + 26
3 libsystem_platform.dylib 0x0000000000000010 _sigtramp + 2639925456
4 libsystem_c.dylib 0x00007fff627fc1ae abort + 127
5 Swift 0x0000000104cf599b Swift::ModuleFile::fatal(llvm::Error) + 1915
6 Swift 0x0000000104d2d4d2 Swift::SILDeserializer::readGlobalVar(llvm::StringRef) + 1890
7 Swift 0x0000000104dd7f9a Swift::SerializedSILLoader::getAllForModule(Swift::Identifier, Swift::FileUnit*) + 234
8 Swift 0x0000000103b2adbe performCompile(Swift::CompilerInstance&, Swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, Swift::FrontendObserver*, Swift::UnifiedStatsReporter*) + 34750
9 Swift 0x0000000103b1f10f Swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, Swift::FrontendObserver*) + 7839
10 Swift 0x0000000103ac8c48 main + 13144
11 libdyld.dylib 0x00007fff62750015 start + 1
12 libdyld.dylib 0x0000000000000041 start + 2643132461
Stack dump:
0. Program arguments: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/Swift -frontend -merge-modules -emit-module /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Objects-normal/x86_64/ViewController~partial.swiftmodule /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Objects-normal/x86_64/AppDelegate~partial.swiftmodule /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Objects-normal/x86_64/Edgy~partial.swiftmodule -parse-as-library -sil-merge-partial-modules -disable-diagnostic-passes -disable-sil-perf-optzns -target x86_64-Apple-ios12.0-simulator -enable-objc-interop -sdk /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.0.sdk -I /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Products/Debug-iphonesimulator -F /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Products/Debug-iphonesimulator -enable-testing -g -module-cache-path /Users/coeur/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -Swift-version 4.2 -enforce-exclusivity=checked -Onone -D DEBUG -serialize-debugging-options -Xcc -working-directory -Xcc /Users/coeur/Development/Edgy -Xcc -I/Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Swift-overrides.hmap -Xcc -iquote -Xcc /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Edgy-generated-files.hmap -Xcc -I/Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Edgy-own-target-headers.hmap -Xcc -I/Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Edgy-all-target-headers.hmap -Xcc -iquote -Xcc /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Edgy-project-headers.hmap -Xcc -I/Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Products/Debug-iphonesimulator/include -Xcc -I/Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/DerivedSources/x86_64 -Xcc -I/Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/DerivedSources -Xcc -DDEBUG=1 -emit-module-doc-path /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Objects-normal/x86_64/Edgy.swiftdoc -emit-objc-header-path /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Objects-normal/x86_64/Edgy-Swift.h -module-name Edgy -o /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Objects-normal/x86_64/Edgy.swiftmodule
1. While deserializing SIL global "UIEdgeInsetsZero"
error: Abort trap: 6
本日、Xcode10ベータ3で修正されました。
「UIEdgeInsetsのゼロプロパティを正常に使用できるようになりました。(40735990)」
Xcode 10ベータおよびXcode 10ベータ2で見つけた回避策は次のとおりです。 。 Xcodeを更新するまで、これをプロジェクトのどこかに一時的に含めてください。
#if Swift(>=4.2)
import UIKit.UIGeometry
extension UIEdgeInsets {
public static let zero = UIEdgeInsets()
}
#endif
(このプルリクエストのおかげで解決が行われました: https://github.com/Apple/Swift/pull/17122 )
これはSwiftコンパイラのバグです。現在の状態については https://bugs.Swift.org/browse/SR-7879 を参照し、詳細を入手してください。
この回避策を使用してみてください。
すべてのオカレンスを置き換える_.zero
_ like
_tableView.separatorInset = .zero
_
に
tableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
ワークスペース全体で_.zero
_を検索し、タイプを確認すると便利です。タイプがUIEdgeInsets
の場合は、_.zero
_を置き換えるだけです。
Xcode 10 gotoビルド設定で[すべて]を選択し、最適化レベルを検索します
Swiftコンパイラ-コード生成最適化レベルのデバッグ:最適化なし[-Onone]で速度を最適化する[-O]の変更]それは私にとってはうまくいきました。