このコードはXcode 8ベータ5でコンパイルされていましたが、ベータ6で壊れていました。この比較を行うための正しい新しいSwift 3の方法は何ですか?私はちょうど同じエラーメッセージを取得することに成功したXcode 8 beta 6 swift 3 localizedCaseInsensitiveCompare
Argument passes to call that takes no arguments
このコードはXcode 8ベータ5でコンパイルされていましたが、ベータ6で壊れていました。この比較を行うための正しい新しいSwift 3の方法は何ですか?私はちょうど同じエラーメッセージを取得することに成功したXcode 8 beta 6 swift 3 localizedCaseInsensitiveCompare
Argument passes to call that takes no arguments
self.categories = categories.sorted { $0.localizedCaseInsensitiveCompare($1) == ComparisonResult.orderedDescending }
エラーです。私のテストコードで
、私のように、インスタンスのプロパティcategories
を宣言した場合:あなたのケースはこれに非常に類似している場合
error: argument passed to call that takes no arguments
は、あなたが必要とする:
var categories: [NSString] = []
私は、このエラーメッセージを持っていますプロパティの宣言を変更するには:
var categories: [String] = []
これがあなたの問題は、あなたがより良い理由ベータ6/Xcodeの8スウィフト3のように、型不一致のこの種を確認したい:
問題はself.categoriesはNSArrayですか?私は議論を議論したので、問題はソートコマンドであると思った。 –
@JasonHocker、Swift 3は迅速に進化しており、Swiftチームは診断メッセージを洗練する時間がありません。 Swiftが(あなたのケースでは 'NSArray'?)期待どおりの型を返す' sorted'の一致するオーバーロードを見つけることができないとき、ときどきこの種の不適切で混乱しやすいメッセージを出力します。この種の悪質な診断はバグと見なされるべきだと思うので、バグレポートをアップルまたはswift.orgに送る方がよいでしょう。 – OOPer
同じ(Xcodeの8ベータ6のリリースノートからの引用)
ここで問題を起こす。 Xcodeベータ版の公式Swift 3ガイドからスニペットをコンパイルしようとしましたが、同じエラー - Argument passes to call that takes no arguments
がありました。しかし、私がIBM Swift Sandboxを使用したとき、それは正常にコンパイルされました。
let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]
func backward(_ s1: String, _ s2: String) -> Bool {
return s1 > s2
}
var reversedNames = names.sorted(by: backward)
hereを見てから、ソートのAPIが x.sorted(isOrderedBefore:>)から変化しているようです(:>によって)x.sortedします。私は将来Xcodeベータ版では、これは世話をするだろうと思う。
別の書き込み方法: var reversedNames = names.sorted({s1、s2 - > Bool in s1> s2}) – Edudjr
エラーメッセージが本当に悪い場合は、bugs.swift.orgにバグを報告してください。それは、それが何の話をしているのかを指摘していますか? – jtbandes
このコードは私のために働くだけでなく、ソートされた(by:<)を使用して降順をソートすることを推奨しています。 – jjatie
Swift 3で 'ed'を使わずに' sort'を使って、場所をソートすることができます。 'categories.sort {$ 0.localizedCaseInsensitiveCompare($ 1)== .orderedDescending}' –