gpt4 book ai didi

ios - 需要通过嵌套异步调用获得 "For Loop"的结果( Objective-C )

转载 作者:行者123 更新时间:2023-11-29 12:52:38 25 4
gpt4 key购买 nike

一旦循环完成,我需要获得最终的 activeTime 值。

下面的代码运行一个循环,循环多次调用一个 block (运行一个异步进程)。如果在此期间发生超过 10 步,则每个循环都会增加 activeTime。

最终我想调用这段代码并让它返回 activeTime 的最终值。

我正在考虑 completionhandler 但不确定。

有人可以建议我如何实现这一目标吗?

    __block NSInteger activeTime = 0;
for (NSDate *date = [self startDateOfToday];
[date compare:[NSDate date]] == NSOrderedAscending;
date = [date dateByAddingTimeInterval:10])
{
NSDate *rangeStart = date;
NSDate *rangeEnd = [date dateByAddingTimeInterval:10];

[stepCounter queryStepCountStartingFrom:rangeStart
to:rangeEnd
toQueue:[NSOperationQueue mainQueue]
withHandler:^(NSInteger numberOfSteps, NSError *error) {

if (numberOfSteps > 10) {
activeTime=activeTime+10;
}

NSLog(@"Steps = %ld; Time = %ld",(long)numberOfSteps, (long)activeTime);
}];
}

最佳答案

你可以使用回调

- (void) myfunction {
__block NSInteger activeTime = 0;
for (NSDate *date = [self startDateOfToday];
[date compare:[NSDate date]] == NSOrderedAscending;
date = [date dateByAddingTimeInterval:10])
{
NSDate *rangeStart = date;
NSDate *rangeEnd = [date dateByAddingTimeInterval:10];

[stepCounter queryStepCountStartingFrom:rangeStart
to:rangeEnd
toQueue:[NSOperationQueue mainQueue]
withHandler:^(NSInteger numberOfSteps, NSError *error) {

if (numberOfSteps > 10) {
activeTime=activeTime+10;
}

if(rangeEnd == numberOfSteps)
{
[self callback:activeTime];
}

NSLog(@"Steps = %ld; Time = %ld",(long)numberOfSteps, (long)activeTime);
}];
}
}

- (void)callback:(NSInteger)activeTime {

NSLog(@"Active Time = %d", activeTime);
}

关于ios - 需要通过嵌套异步调用获得 "For Loop"的结果( Objective-C ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22053421/

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