找不到类型的初始化程序

Posted

技术标签:

【中文标题】找不到类型的初始化程序【英文标题】:Cannot find an initializer for type 【发布时间】:2015-08-07 09:29:35 【问题描述】:
    let endDate = NSDate()
    let startDate = NSDate()
    let v : Float?
    let stepsCount:HKQuantityType = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount)!
    let predicate:NSPredicate = HKQuery.predicateForSamplesWithStartDate(startDate, endDate: endDate, options: .None)

    let query = HKQuantitySample(sampleType: stepsCount, predicate: predicate, limit: 1, sortDescriptors: nil, resultsHandler: 
        (query, results, error) in
        if results == nil 
            print(error)
        
        v = result.first.Quantity

    )
    healthStore.executeQuery(query)

找不到接受的“HKQuantitySample”类型的初始化程序 类型为 '(sampleType: HKQuantityType, predicate: NSPredicate, 限制: Int, sortDescriptors: nil, resultsHandler: (_, _, _) -> _)'

【问题讨论】:

【参考方案1】:

只需将HKQuantitySample 替换为HKSampleQuery 即可。

更多信息请参考THIS教程。

您可以在哪里找到示例代码,例如:

func readMostRecentSample(sampleType:HKSampleType , completion: ((HKSample!, NSError!) -> Void)!)


  // 1. Build the Predicate
  let past = NSDate.distantPast() as! NSDate
  let now   = NSDate()
  let mostRecentPredicate = HKQuery.predicateForSamplesWithStartDate(past, endDate:now, options: .None)

  // 2. Build the sort descriptor to return the samples in descending order
  let sortDescriptor = NSSortDescriptor(key:HKSampleSortIdentifierStartDate, ascending: false)
  // 3. we want to limit the number of samples returned by the query to just 1 (the most recent)
  let limit = 1

  // 4. Build samples query
  let sampleQuery = HKSampleQuery(sampleType: sampleType, predicate: mostRecentPredicate, limit: limit, sortDescriptors: [sortDescriptor])
     (sampleQuery, results, error ) -> Void in

      if let queryError = error 
        completion(nil,error)
        return;
      

      // Get the first sample
      let mostRecentSample = results.first as? HKQuantitySample

      // Execute the completion closure
      if completion != nil 
        completion(mostRecentSample,nil)
      
  
  // 5. Execute the Query
  self.healthKitStore.executeQuery(sampleQuery)

【讨论】:

【参考方案2】:

文档没有像您提供的那样谈论任何初始化程序……甚至查看了 Beta 文档,也没有找到任何关于您尝试调用的初始化程序。

请在此处查找可用的现有 HKQuantitySample 初始化程序:

https://developer.apple.com/library/ios/documentation/HealthKit/Reference/HKQuantitySample_Class/

有关创建查询的正确方法,请参阅 Dharmesh Kheni 的答案 :)。

【讨论】:

以上是关于找不到类型的初始化程序的主要内容,如果未能解决你的问题,请参考以下文章

找不到类型的初始化程序

找不到类型的初始化程序

泽西岛:找不到媒体类型 = 应用程序/json、类型 = 类 org.codehaus.jackson.node.ObjectNode 的 MessageBodyWriter?

严重:找不到媒体类型 = 应用程序/json、类型 = 类 com.jersey.jaxb.Todo、通用类型 = 类 com.jersey.jaxb.Todo 的 MessageBodyWriter

SpringBoot找不到类异常解决

初始化类路径时出错:找不到与 services.gradle.org 匹配的主题备用 DNS 名称。 -> 运行 grails 3.0.1 应用程序时