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