Ios 我的JS端无法识别objc方法
我正在尝试将我的obj-c方法调用到我的js文件。Ios 我的JS端无法识别objc方法,ios,objective-c,swift,xcode,Ios,Objective C,Swift,Xcode,我正在尝试将我的obj-c方法调用到我的js文件。 它不断抛出错误“updateUI不是可识别的object-c方法” 这里可能有什么错误 @objc func updateUI(_ statisticsCollection: HKStatisticsCollection, _ resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) { struct
它不断抛出错误“updateUI不是可识别的object-c方法”
这里可能有什么错误
@objc
func updateUI(_ statisticsCollection: HKStatisticsCollection, _ resolve: RCTPromiseResolveBlock,
rejecter reject: RCTPromiseRejectBlock) {
struct Step {
let id = UUID()
var count: Int?
var date: Date?
}
let startDate = Calendar.current.date(byAdding: .day, value: -7, to: Date())!
let endDate = Date()
statisticsCollection.enumerateStatistics(from: startDate, to: endDate) { (statistics, stop) in
let count = statistics.sumQuantity()?.doubleValue(for: .count())
let steps = Int(count ?? 0)
var stepCount = [Step]()
var tempStepCount = Step(count: steps, date: Date())
tempStepCount.count = steps
tempStepCount.date = startDate
stepCount.append(tempStepCount)
}
resolve(Step())
}
更新:从HealthKit检索步骤计数的查询:
@objc
func updateStepsCount(_ statisticsCollection: HKStatisticsCollection, _ resolve: @escaping RCTPromiseResolveBlock,
rejecter reject: @escaping (RCTPromiseRejectBlock) -> Void) {
let stepType = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.stepCount)!
let startDate = Calendar.current.date(byAdding: .day, value: -7, to: Date())
let anchorDate = Date.mondayAt12AM()
let daily = DateComponents(day: 1)
let predicate = HKQuery.predicateForSamples(withStart: startDate, end: Date(), options: .strictStartDate)
let query = HKStatisticsCollectionQuery(quantityType: stepType, quantitySamplePredicate: predicate, options: .cumulativeSum, anchorDate: anchorDate, intervalComponents: daily)
healthStore.execute(query)
}
我的问题对吗我是直接在JS文件中调用它,还是需要将它附加到一个对象中??
我对objc和swift非常陌生,我需要一些帮助。您的
@objc
updateUI
方法有3个参数,您正在调用两个
试一试
根据您提供的代码,不可能知道您的someStatisticsCollection
在js中来自何处
更新
我对ReactNative不是很熟悉,但基于它,似乎不可能将任何内容返回到js
不管怎样,你的代码
@objc
func updateStepsCount(_ statisticsCollection: HKStatisticsCollection, _ resolve: @escaping RCTPromiseResolveBlock,
rejecter reject: @escaping (RCTPromiseRejectBlock) -> Void)
似乎没有使用任何论点。如果你想知道这是否是一个正确的HealthKit查询,是否值得提出自己的问题
总之,您的
RCT\u EXTERN\u方法
签名必须与方法定义参数匹配。您的代码中没有这种情况。谢谢,伙计。请检查我的最新问题。为此挣扎了好几天。我只想从我的JS文件中读取步数。我不能把一切都整合起来。不知何故,我设法获得了HealthKit的工作许可。
RCT_EXTERN_METHOD(updateUI: (HKStatisticsCollection)someStatisticsCollection
resolve: (RCTPromiseResolveBlock)resolve
rejecter:(RCTPromiseRejectBlock)reject)
@objc
func updateStepsCount(_ statisticsCollection: HKStatisticsCollection, _ resolve: @escaping RCTPromiseResolveBlock,
rejecter reject: @escaping (RCTPromiseRejectBlock) -> Void)