字符串到字典和向后

时间:2014-05-06 08:25:22

标签: ios objective-c string dictionary time

我为ESTIMOTE Beacons设计了一个解决方案,每次经过该地区都不会让你烦恼,但我是Objective C,iOS,iPhone等的新手,我不能在Objective-C中使用它。我们假设我们在区域中只有一个信标。因此,每当您进入一个区域时,它就会开始射程,找到唯一的1个信标并执行以下操作: 检查特定文件是否在特定路径上,如果没有,则创建文件并将字符串放入其中,如“major_as_int:actual_time;”,通过get变量将主要值发送到.php文件,php完成工作。

这是我的第一个问题。如何以“23:10:01”的格式获得时间?

如果文件已经存在,那么检查它是否为空,IF FILE ISNT EMPTY这里是我的第二个问题....

如何将字符串转换为字典,编辑字典,然后将字典转换回字符串,以便我可以用字典中的新字符串替换文件中的旧字符串?

例如:我的文件中已有一个字符串“12345:12:45:12; 54321:20:15:01; 90900:05:21:13;”我想用它来制作字典{12345:12:45:12,54321:20:15:01,90900:05:21:13}。主要值应该是字典中的整数,因此我可以要求将字典中的实际主要值作为键。如果是,检查它在那里多久,如果24小时或更长时间结束,再次执行php。如果没有,就什么都不做。将相同的字符串返回给文件如果实际主要值不在字典中,则将实际主要值添加为具有实际时间值的新密钥。字典看起来像{12345:12:45:12,54321:20:15:01,90900:05:21:13,88771:10:12:33}。然后字典转换回字符串“12345:12:45:12; 54321:20:15:01; 90900:05:21:13; 88771:10:12:33;”

一些代码片段会很高兴看到,但我愿意学习它的未来工作,所以请告诉我正确的方向,不要发布太多的代码。或者也许我以错误的方式攻击问题?提前谢谢。

2 个答案:

答案 0 :(得分:2)

那应该将字符串转换为字典(尽管没有测试过)。从这个例子中可以清楚地看到向后转换。

    NSString *string1 = @"12345:12:45:12;54321:20:15:01;90900:05:21:13;";
    NSArray *components1 = [string1 componentsSeparatedByString:@";"];

    NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary];
    for (NSString *string2 in components1) {
        NSArray *components2 = [string2 componentsSeparatedByString:@":"];
        NSMutableArray *mutableComponents2 = [components2 mutableCopy];
        NSString *majorValue = [mutableComponents2 firstObject];

        // Check whether there is actually a majorValue
        if (majorValue) {
            [mutableComponents2 removeObjectAtIndex:0];
            mutableDictionary[majorValue] = [mutableComponents2 componentsJoinedByString:@":"];
        }
    }

    NSLog(@"mutableDictionary: %@", mutableDictionary);

编辑:如果您的字符串看起来像123#12:12:12;,则会更改为

    NSString *string1 = @"12345#12:45:12;54321#20:15:01;90900#05:21:13;";
    NSArray *components1 = [string1 componentsSeparatedByString:@";"];

    NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary];
    for (NSString *string2 in components1) {
        NSArray *components2 = [string2 componentsSeparatedByString:@"#"];
        NSMutableArray *mutableComponents2 = [components2 mutableCopy];
        NSString *majorValue = [mutableComponents2 firstObject];

        // Check whether there is actually a majorValue
        if (majorValue) {
            mutableDictionary[majorValue] = [mutableComponents2 lastObject];
        }
    }

    NSLog(@"mutableDictionary: %@", mutableDictionary);

答案 1 :(得分:0)

要回答您的第一个问题,关于如何在格式23:59:59获得时间,我将提供以下代码。

#import <Foundation/Foundation.h>

@implementation NSDateFormatter(myCategory)
+ (NSDateFormatter *)for24Hours {
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    NSString *template = [[self class] dateFormatTemplateFor24Hours];
    [formatter setDateFormat:template];
    return formatter;
}
+ (NSString *)dateFormatTemplateFor24Hours {
    NSString  *template = @"HHmmss";
    const NSUInteger options = 0;
    NSLocale *locale = [NSLocale currentLocale];
    NSString *dateAs24Hours = [NSDateFormatter dateFormatFromTemplate:template options:options locale:locale];
    return dateAs24Hours;
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSDateFormatter *formatter = [NSDateFormatter for24Hours];
        NSDate *now = [NSDate date];
        NSLog(@"%@", [formatter stringFromDate:now]);
    }
    return 0;
}