2017-11-15 2 views
0

나는 과거에 이미이 문제를 경험했지만 해결했습니다.Xcode 9.1 - 회원 필터에 대한 모호한 참조

하지만 오늘 난 그냥 새로운 엑스 코드 버전 9.1을 다운로드 및 응용 프로그램이 더 이상 제작되지 않은, 내가 가지고 :

는 난 이유를 모르겠어

참조가 모호 멤버 '필터'

에 , 이것은 내가 작업하고있는 코드 조각이 아닙니다. 응용 프로그램은 건물/벌금 주 동안 컴파일됩니다. 나는 Official Apple Website에 릴리즈 노트를 검사 할 때

, 내 문제에 대한 참조를 찾을 수가 없습니다.

var severeWeather: Results<SevereWeather>? 
var vigiArray = Array<SevereWeather>() 
var redCount: Int = 0 

severeWeather = realm.objects(SevereWeather.self).filter(NSPredicate(format: "department != nil")) 
.sorted(byKeyPath: "departmentNumber") 

vigiArray = Array(severeWeather!) 

redCount = vigiArray.filter { $0.dangerLevels.filter { $0.level.value == 4 }.count > 0 }.count 

내 코드에 어떤 문제가 : 그래서 여기

완벽하게 시간 전 작업 한 코드의 조각?

+0

문제가있는 줄 정확히 무엇입니까? –

+0

마지막 하나. .filter – Balanced

+1

에 [최소 완료하고 검증 예]를 입력 해주세요 (https://stackoverflow.com/help/mcve). 당신의 영역 객체 클래스를보고 따라서 실제로 코드를 테스트 할 수있는없이, 컴파일러가 사용하는'filter' 방법 영역의 또는 스위프트의를 결정할 수없는 이유를 확인하는 것은 매우 어렵다. –

답변

1

RealmCollection에는 filter 메서드가 있으며이 메서드는 다르게 구현됩니다. 어떤 이유로 Swift 컴파일러는 어느 것이 참조해야하는지 알지 못합니다. 이것에 대해

무엇 :

redCount = vigiArray.filter { 
    return $0.dangerLevels.filter(NSPredicate(format: "%K == %@", "level.value", NSNumber(integerLiteral: 4))).count > 0 
}.count 

대신 dangerLevels에서 자신을 각 요소를 액세스, 술어를 구축 할 영역은 당신을 위해 일을하고 있어요.

둥지 필터를이 필터로 바꾸면 올바르게 컴파일해야합니다.

+0

에 모호한 참조는, 당신을 감사 솔루션이 작동했습니다. 사실은 스위프트와 영역 필터 방법 컴파일러 문제였다. – Balanced

+1

다행히 도울 수있다 :-) – DanielH

관련 문제