gpt4 book ai didi

ios - 参数类型“[HKCategoryType?]”与预期的类型“哈希”不符

转载 作者:行者123 更新时间:2023-12-01 17:37:03 26 4
gpt4 key购买 nike

我正在尝试通过使用代码请求对healthkit中类别的授权:

let healthKitStore: HKHealthStore = HKHealthStore()
let healthKitTypesToWrite = Set(arrayLiteral:[
HKObjectType.categoryType(forIdentifier: HKCategoryTypeIdentifierMindfulSession)
])
healthKitStore.requestAuthorizationToShareTypes(healthKitTypesToWrite, readTypes: healthKitTypesToRead) { (success, error) -> Void in

if( completion != nil )
{
completion(success:success,error:error)
}
}

来自 https://www.raywenderlich.com/86336/ios-8-healthkit-swift-getting-started

但是,当我这样做时,我得到:

参数类型“[HKCategoryType?]”与预期类型不符
“可散列”

如何在Healthkit中保存类别,并且总体上有专门针对HKCategoryType以及HKCategoryTypeIdentifierMindfulSession的教程?

最佳答案

链接的文章不是从ArrayLiteral创建Set的好例子。

您需要将Set<HKSampleType>传递给requestAuthorization(toShare:read:)(该方法在Swift 3中已重命名),Swift并不擅长推断集合类型。

因此,最好明确声明每种类型的healthKitTypesToWritehealthKitTypesToRead

let healthKitTypesToWrite: Set<HKSampleType> = [
HKObjectType.categoryType(forIdentifier: HKCategoryTypeIdentifier.mindfulSession)!
]
let healthKitTypesToRead: Set<HKObjectType> = [
//...
]
healthKitStore.requestAuthorization(toShare: healthKitTypesToWrite, read: healthKitTypesToRead) { (success, error) -> Void in

completion?(success, error)
}

通过将ArrayLiteral赋予某种 Set类型,Swift尝试将ArrayLiteral转换为 Set,在内部调用 Set.init(arrayLiteral:)。通常,您无需直接使用 Set.init(arrayLiteral:)

关于ios - 参数类型“[HKCategoryType?]”与预期的类型“哈希”不符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39666810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com