首先,我对objective-c和ios开发非常新。
我有一个从互联网上下载的.plist,然后用于填充UITableView。我可以在AppDelegate的ApplicationDidLaunch方法中使用它,如下所示。
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *finalPath = [path stringByAppendingPathComponent:@"Data.plist"];
NSURL *theFileURL = [NSURL URLWithString:@"http://dl.dropbox.com/u/8068058/Data.plist"];
NSDictionary *replace = [[NSDictionary alloc] initWithContentsOfURL:theFileURL];
if (replace != nil){
[replace writeToFile:finalPath atomically:YES];
}
然后我将其设置为DataPath
NSString *Path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *DataPath = [Path stringByAppendingPathComponent:@"Data.plist"];
NSDictionary *tempDict = [[NSDictionary alloc] initWithContentsOfFile:DataPath];
self.data = tempDict;
[tempDict release];
这一切都很好,然后我填充TableView并显示它。如果我向显示表的NavgationController添加一个“刷新”按钮。当我按下它并运行相同的下载代码后跟
[self.tableView reloadData];
我一无所获,有谁知道如何解决这个问题?
答案 0 :(得分:0)
虽然你已经解决了问题,但我应该指出一些更好的方法。
NSDocumentsDirectory
中。如果用户无法随时修改数据,我强烈建议您将其保存在NSCachesDirectory
中。如果没有尝试使用NSLibraryDirectory
。由于iOS5 Apple不喜欢将下载的数据存储在NSDocumentsDirectory
。queue
中执行网络提取。如果对其执行网络提取,则将阻止主队列。我知道在这种情况下,这几乎不会引起注意,因为文件大小很小,但如果您的互联网连接不良,您会注意到UI被阻止的方式。 我指出这些事情,因为当我开始为iOS开发时,我遇到了同样的麻烦。如果您不想了解有关如何执行此操作的更多信息,请随时询问:)