在对 API 的每次请求中将 API 值与本地存储值进行比较

Compare API value to a local stored value at each request to API

好的,大脑完全冻结了。我收到了来自 CI Jenkins API 的回复。结果包含我在 Jenkins 的项目的成功构建编号,每次在 Jenkins 平台上成功构建运行时该编号都会递增。

现在我希望我的应用程序检查请求是否有 new 成功构建,如果有我想通知用户。那么我如何在应用程序中存储当前内部版本号,然后将它与每次我发出检查 Jenkins 内部版本号的请求进行比较,以比较本地存储的内部版本号是否小于我 Jenkins 上的内部版本号

[manager GET:@"http://jenkins.myProject/lastSuccessfulBuild/api/json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSDictionary *responseDict = responseObject;

    NSInteger repsonsBuildNumber = [responseDict[@"number"] integerValue];

    if ([responseDict[@"result"] integerValue] == BuildStateSuccess && repsonsBuildNumber > self.currentBuildNumber ) {
        NSLog(@"There is a new succesful build at Jenkins");
    } else {
        NSLog(@"There currentBuildNumber is the same as the repsonsBuildNumber");
    }

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

那么我如何存储 currentBuildNumber 以将其与每个请求的 repsonsBuildNumber 进行比较?

NSUserDefaults 非常适合这个。只需使用 -(NSInteger)integerForKey: 获取存储的当前内部版本号:

 NSInteger currentBuildNumber = [[NSUserDefaults standardUserDefaults] integerForKey:@"currentBuildNumber"]];
 NSInteger repsonsBuildNumber = [responseDict[@"number"] integerValue];

 if (currentBuildNumber < repsonsBuildNumber) {
     // there is a new build
 }

然后设置它,只需使用

[[NSUserDefaults standardUserDefaults] setInteger:repsonsBuildNumber forKey:@"currentBuildNumber"]];