Skip to content

Increment by 1, return previous

Atomically increments by one the current value and returns the previous value of the counter. It is possible that multiple concurrent client requests may receive the same previous value. This occurs since only the incrementing part of the logic is atomic, the retrieval of the value before it is incremented is not.

- (void)getAndIncrementWithCounterName:(NSString * _Nonnull)counterName responseHandler:^(NSInteger)responseHandler errorHandler:^(Fault * _Nonnull)errorHandler;
func getAndIncrement(counterName: String, responseHandler: ((Int) -> Void)!, errorHandler: ((Fault) -> Void)!)

where:

Argument                Description
counterName name of the counter to increment.

Example

[Backendless.shared.counters getAndIncrementWithCounterName:@"MyCounter" responseHandler:^(NSInteger value) {
    NSLog(@"Previous value = %li", value);
} errorHandler:^(Fault *fault) {
    NSLog(@"Error: %@", fault.message);
}];

//

id<IAtomic> myCounter = [Backendless.shared.counters ofCounterName:@"MyCounter"];
[myCounter getAndIncrementWithResponseHandler:^(NSInteger value) {
    NSLog(@"Previous value = %li", value);
} errorHandler:^(Fault *fault) {
    NSLog(@"Error: %@", fault.message);
}];
Backendless.shared.counters.getAndIncrement(counterName: "MyCounter", responseHandler: { value in
    print("Previous value = \(value)")
}, errorHandler: { fault in
    print("Error: \(fault.message ?? "")")
})

//

let myCounter = Backendless.shared.counters.of(counterName: "MyCounter")
myCounter.getAndIncrement(responseHandler: { value in
    print("Previous value = \(value)")
}, errorHandler: { fault in
    print("Error: \(fault.message ?? "")")
})