在运行应用程序时将数据写入 plist 并将它们读取到 UITable
Posted
技术标签:
【中文标题】在运行应用程序时将数据写入 plist 并将它们读取到 UITable【英文标题】:Write data to plist while running app and read them to UITable 【发布时间】:2013-11-10 20:49:25 【问题描述】:我想将数据存储到 UITable 的 plist 中,但到目前为止,如果它们已经写在那里,我可以从 plist 中读取它们。我想在运行应用程序时写入数据。 这是在UITableView中将数据保存到单元格的方法
-(IBAction)saveAction:(id)sender
Tricks *trick = [[Tricks alloc]init];
trick.trickName = self.trickLabel.text;
//trick.trickPhoto = self.ImagePhoto.image;
[[Tricks trickList]insertObject:trick atIndex:0];
[self.navigationController popViewControllerAnimated:YES];
在 detailViewController 中,我可以拍照并在地图上放置图钉。 单元格的照片、图钉和文本存储在 NSObject 的子类中。
加载detailViewController
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if([[segue identifier] isEqualToString:@"detailTrick"])
NSIndexPath *indexPath = nil;
indexPath = [self.tableView indexPathForSelectedRow];
DetailViewController *detailViewController = [segue destinationViewController];
Tricks *trick = [[Tricks trickList] objectAtIndex:indexPath.row];
detailViewController.fileText = trick.trickName;
detailViewController.pinMKPoint = trick.pinNotation;
detailViewController.trick = trick;
连接到 plist 的代码
NSString *trickList = [[NSBundle mainBundle]pathForResource:@"trickList" ofType:@"plist"];
_trick = [[NSMutableDictionary alloc]initWithContentsOfFile:trickList];
_trickPhotos = [[_trick objectForKey:@"trickPhotos"]objectAtIndex:0];
_trickNames = [[_trick objectForKey:@"trickNames"]objectAtIndex:0];
_mapAnnotations = [[_trick objectForKey:@"pinKit"]objectAtIndex:0];
我想将所有数据写入 plist 并在启动应用程序时读取它们。 感谢您的建议。
【问题讨论】:
显示Tricks
的定义,这样数据类型就清楚了。为什么是plist?您尝试过什么/看到了什么错误?
没有错误,但我注意到几个小时后存储在 UITablewView 中的数据被删除了。我被告知这是因为其他应用程序使用了 RAM 并且应用程序仅依赖于多任务处理。 @property(strong, nonatomic) UIImage *trickPhoto; @property(strong, nonatomic) NSString *trickName; @property(nonatomic) BOOL 登陆; @property(nonatomic) MKPointAnnotation *pinNotation;
显示你的读写plist的代码。
NSString *trickList = [[NSBundle mainBundle]pathForResource:@"trickList" ofType:@"plist"]; _trick = [[NSMutableDictionary alloc]initWithContentsOfFile:trickList]; _trickPhotos = [[_trick objectForKey:@"trickPhotos"]objectAtIndex:0]; _trickNames = [[_trick objectForKey:@"trickNames"]objectAtIndex:0]; _mapAnnotations = [[_trick objectForKey:@"pinKit"]objectAtIndex:0];我只能阅读....我正在寻求写作方面的建议
请用代码更新您的问题。不要在评论中发布。
【参考方案1】:
你已经清楚地看到了 NSDictionary 的-initWithContentsOfFile:
方法。你也看过-writeToFile:atomically:吗?这似乎是您正在寻找的行为。如果您需要更具体的内容,请更新您的问题以寻求更具体的帮助。
【讨论】:
问题在于尝试将 plist 写入应用的资源包。 首先,如果应用程序使用MVC模型并且数据存储在NSObject子类中,我什至需要将数据存储在plist中吗?? @JozefVrana 对象仅驻留在内存中。当您的应用程序终止时,仅存储在那里的任何数据最终都会丢失。如果您需要在用户关闭/后台您的应用程序后保留此数据,那么您必须将其存储在一些持久存储中。 plist 文件当然是一种选择。 至于写入应用程序资源包的问题,请参阅 ios Standard Directories: Where Files Reside 和 Locating Items in the Standard Directories以上是关于在运行应用程序时将数据写入 plist 并将它们读取到 UITable的主要内容,如果未能解决你的问题,请参考以下文章
我们如何在 NSMutableArray 中添加带有 Image 作为对象的 NSMutableDictionary 并将这个数组写入 Plist