0

我的应用程序是 SplitView 类型,我正在使用UITableView它来显示网站的名称。在didSelectRowAtIndexPath方法中,我使用以下代码行::

dateString = [formatter stringFromDate:[NSDate date]];
dict = [[NSDictionary alloc] init];
dict = [NSDictionary dictionaryWithObjectsAndKeys: urlString, dateString, nil];

[history addObject:dict];

NSLog(@"dateString: %@", dateString); //will let you know if it's nil or not
NSLog(@"urlString : %@", [dict objectForKey:dateString]);

NSString *docDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSLog(@"docDir is yoyo :: %@", docDir);
NSString *spaceFilePath = [docDir stringByAppendingPathComponent:@"space.txt"];
[history writeToFile:spaceFilePath atomically: TRUE];  

我正在尝试将访问过的网站的网址与时间戳一起添加到NSDictionary“dict”中。我已经在viewDidLoad方法中初始化了格式化程序。History 是一个存储字典列表的数组。

我在viewDidLoad方法中使用了以下代码行:

formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

我想将访问的新站点的名称附加到已经存在的文件 space.txt 中。

但是,只有一个名称出现(最后访问的站点的 url)。如何将新访问的站点名称附加到我已经存在的文件 space.txt 中?我无法解决这个问题。

谢谢并恭祝安康。

4

3 回答 3

0

您正在创建的对象(“dict”)每次都不同。仅仅意味着您在字典中添加选定的详细信息并编写它。因此您无法看到之前保存的详细信息。检查以下代码以将新访问的站点名称附加到我已经存在的文件 space.txt 中。

dateString = [formatter stringFromDate:[NSDate date]];

NSString *docDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *spaceFilePath = [docDir stringByAppendingPathComponent:@"space.txt"];

if ([[NSFileManager defaultManager] fileExistsAtPath:spaceFilePath]) {
    NSMutableDictionary *appendDict = [[NSMutableDictionary alloc] initWithContentsOfFile:spaceFilePath];
    [appendDict setObject:urlString forKey:dateString];
    [appendDict writeToFile:spaceFilePath atomically: TRUE];  
    [appendDict release];
} else {
    NSMutableDictionary *appendDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:urlString, dateString, nil];
    [appendDict writeToFile:spaceFilePath atomically: TRUE];  
    [appendDict release];
}

我认为这很有用。

于 2012-06-22T09:48:45.057 回答
0

使用 NSMutableDictionary(而不是 NSDictionary)来拥有一个可变的字典(= 可以修改)。


附录:请注意,您的行dict = [[NSDictionary alloc] init];完全没用,因为您在下一行重新影响了变量“dict”。这就像你做了类似的事情:int a = 5;后跟a=8,当然之前变量中的值被新的值替换,并且之前的值(你[[NSDictionary alloc] init]在你的 cas 中)丢失了。

于 2012-06-22T09:20:45.830 回答
0

你也可以使用你的代码。请交叉检查您是否在 viewDidLoad 中分配了“历史”对象。如果没有,请做出来。

于 2012-06-22T09:57:13.913 回答