2016-08-22 30 views
1

このコードはXcode 8ベータ5でコンパイルされていましたが、ベータ6で壊れていました。この比較を行うための正しい新しいSwift 3の方法は何ですか?私はちょうど同じエラーメッセージを取得することに成功したXcode 8 beta 6 swift 3 localizedCaseInsensitiveCompare

Argument passes to call that takes no arguments

+0

エラーメッセージが本当に悪い場合は、bugs.swift.orgにバグを報告してください。それは、それが何の話をしているのかを指摘していますか? – jtbandes

+0

このコードは私のために働くだけでなく、ソートされた(by:<)を使用して降順をソートすることを推奨しています。 – jjatie

+0

Swift 3で 'ed'を使わずに' sort'を使って、場所をソートすることができます。 'categories.sort {$ 0.localizedCaseInsensitiveCompare($ 1)== .orderedDescending}' –

答えて

1

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のように、型不一致のこの種を確認したい:

+0

問題はself.categoriesはNSArrayですか?私は議論を議論したので、問題はソートコマンドであると思った。 –

+0

@JasonHocker、Swift 3は迅速に進化しており、Swiftチームは診断メッセージを洗練する時間がありません。 Swiftが(あなたのケースでは 'NSArray'?)期待どおりの型を返す' sorted'の一致するオーバーロードを見つけることができないとき、ときどきこの種の不適切で混乱しやすいメッセージを出力します。この種の悪質な診断はバグと見なされるべきだと思うので、バグレポートをアップルまたはswift.orgに送る方がよいでしょう。 – OOPer

1

同じ(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ベータ版では、これは世話をするだろうと思う。

+0

別の書き込み方法: var reversedNames = names.sorted({s1、s2 - > Bool in s1> s2}) – Edudjr

関連する問題