2016-08-22 4 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/엑스 코드 8 스위프트 (3)과 같은 유형의 부정합의 종류를 확인할 것 :

+0

문제는 self.categories가 NSArray?입니다. 인수를 논의했기 때문에이 문제는 sort 명령과 관련이 있다고 생각했습니다. –

+0

@JasonHocker, Swift 3은 신속하게 진화하여 신속한 팀은 진단 메시지를 수정할 시간이 없습니다. Swift가 'NSArray'에서 예상되는 유형을 반환하는'sorted '의 일치하는 오버로드를 찾을 수없는 경우, 때로는 이런 종류의 부적절하고 혼란스러운 메시지를 출력합니다. 그리고 이런 종류의 나쁜 진단은 버그로 간주되어야하며, 버그 리포트를 Apple이나 swift.org에 보내는 것이 좋습니다. – OOPer

1

동일 (엑스 코드 8 베타 (6)의 릴리즈 노트에서 발췌)

  • Bridging conversions are no longer implicit. The conversion from a Swift value type to its corresponding object can be forced with as . For example: string as NSString . Any Swift value can also be converted to its boxed id representation with as AnyObject . (SE-0072)

여기에서 문제를 제기하십시오. 나는 Xcode beta의 공식 Swift 3 가이드에서 발췌 문장을 컴파일하려고 시도했는데 같은 오류가 발생했습니다 - Argument passes to call that takes no arguments. 그러나 IBM Swift Sandbox를 사용했을 때 성공적으로 컴파일되었습니다. here보고에서

let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"] 
func backward(_ s1: String, _ s2: String) -> Bool { 
return s1 > s2 
} 
var reversedNames = names.sorted(by: backward) 

, 그것은 보인다 x.sorted 변경 소트의 API : x.sorted에 (isOrderedBefore>) (기준 :>). 앞으로 Xcode 베타 버전에서는이 문제가 해결 될 것입니다.

+0

그 또 다른 작성 방법 : var reversedNames = names.sorted ({s1, s2 -> s1> s2의 Bool}) – Edudjr

관련 문제