2016-07-16 9 views
0

방금 ​​2 일 전에 학습을 시작 했으므로 바보 같은 질문이 들리면 사전에 사과드립니다. 나는이 자습서 다음 HealthKit에서 기본 사용자 데이터를 가져 오는 중이 야NSSet 유형의 값을 변환 할 수 없습니까? 예상 인수 유형 설정 <HKSampleType>

: https://www.natashatherobot.com/healthkit-getting-fitness-data/ 하지만 난 그것을 컴파일 할 때, 나는 다음과 같은 오류 얻을 : 나는 다양한 답변을 시도

Cannot convert value of type NSSet? to expected argument type Set <'HKSampleType>

func requestHealthKitAuthorization(dataTypesToWrite: NSSet?, dataTypesToRead: NSSet?) { 
    healthStore?.requestAuthorizationToShareTypes(dataTypesToWrite, readTypes: dataTypesToRead, completion: { (success, error) -> Void in 
     if success { 
      println("success") 
     } else { 
      println(error.description) 
     } 
    }) 
} 

을 그 온라인에서 찾았지만 성공하지 못했습니다.

모든 팁/아이디어를 크게 높이 평가할 것입니다!

답변

3

길고 오래 전에 스위프트 1 시대에 작성된 오래된 기사를 찾은 것 같습니다. 그리고 Xcode (7.3.1, Swift 2.2.1 포함)의 최신 릴리스 버전을 사용하고 있다고 가정합니다.

오류를 표시하는 방법은

같이 쓸 수있다 : 처음 두 파라미터

func requestHealthKitAuthorization(dataTypesToWrite: Set<HKSampleType>?, dataTypesToRead: Set<HKObjectType>?) { 
    healthStore?.requestAuthorizationToShareTypes(dataTypesToWrite, readTypes: dataTypesToRead, completion: { (success, error) -> Void in 
     if success { 
      print("success") 
     } else { 
      print(error?.description ?? "unknown error") 
     } 
    }) 
} 
  • 두 종류 Set<HKSampleType>?Set<HKObjectType>?로 바뀌었다. (오류 메시지는 첫 번째 불일치를 나타냅니다.)

  • completion 처리기의 매개 변수에 대한 선택도가 변경되었습니다.

  • printlnprint은 새로운 print으로 통합됩니다.

하지만 고대 기사 다음으로 많은 어려움이있을 수 있습니다.

나는 당신에게을 사용하고있는 Xcode/Swift의 동일한 버전으로 작성된 다른 기사를 찾으십시오. .

2

당신은

if let writeDataTypes = dataTypesToWrite as? Set<HKSampleType>, 
     readDataTypes = dataTypesToRead as? Set<HKSampleType> { ... 
스위프트 SetNSSet 전송할 수 있습니다
관련 문제