【问题标题】:Sorting Firebase data in objective C base on time stamp根据时间戳对目标 C 中的 Firebase 数据进行排序
【发布时间】:2018-06-09 02:03:06
【问题描述】:

我正在尝试根据 pushID 对 iOS 客户端上的“交易”数据进行排序,因为它是根据时间戳创建的:

"Transaction" : {
    "-LENv2bwDAwH43w9XgCx":{
        "amount": 1000,
        timeStamp: 1526699894096 // generated by admin.database.ServerValue.TIMESTAMP
    },
    "-LENxaYGyAqfbUg7enN7":{
        "amount": 1500,
        timeStamp: 7528362568524
    },
    "-LEOVVgvJaiWkMDb__eF":{
        "amount": 2000,
        timeStamp: 8528353417439
    },
}

我尝试创建2个数组,一个用来存储交易id,一个用来存储对应的交易数据字典:

    [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

            NSDictionary* responseDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&errorJson];

            NSArray *sortedKeys = [[responseDict allKeys] sortedArrayUsingSelector: @selector(compare:)];
            _transactionKeyArray = [sortedKeys mutableCopy];
            _transactionArray = [NSMutableArray array];
            for (NSString *key in _transactionKeyArray){
                [_transactionArray addObject: [responseDict objectForKey: key]];
            };

但是,我发现在根据 pushID(例如 -LENv2bwDAwH43w9XgCx)对其进行排序后,顺序不正确。

根据这篇博文,我们似乎需要根据 firebase 时间戳 (https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html) 对其进行排序

我们应该如何根据时间戳对其进行排序?我还需要对交易 ID 进行排序。

【问题讨论】:

    标签: objective-c json firebase firebase-realtime-database


    【解决方案1】:

    首先,字典在 Objective-C 中没有排序,所以要对其进行排序,首先需要将字典转换为数组。可能是一个字典数组,其中每个元素都是一个带有键的字典:“amount”、“timeStamp”和“pushID”:

    NSMutableArray *transactionItems = [NSMutableArray new];
    for (NSString *pushID in responseDict[@"Transaction"]) {
        // copy amount and timeStamp
        NSMutableDictionary *transactionItem = [responseDict[pushID] mutableCopy];
        transactionItem["pushID"] = pushID;
        [transactionItems addObject:transactionItem];
    }
    

    然后,您可以使用 NSSortDescriptor 以“timeStamp”为键对该数组进行排序。见Sort NSArray of NSDictionary objects using NSSortDescriptor

    【讨论】:

      猜你喜欢
      • 2020-04-15
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 2018-08-09
      • 1970-01-01
      • 2021-03-16
      相关资源
      最近更新 更多