从plist提取数据,然后永久存储在tableview的手机iphone上?

从plist提取数据,然后永久存储在tableview的手机iphone上?,iphone,objective-c,uitableview,plist,Iphone,Objective C,Uitableview,Plist,在我的应用程序中,一个是mainviewcontroller,它是uiTableviewcontroller的子类,当单击特定单元格时,它会显示detailviewcontrollerdvc,它是uiviewcontroller的子类。dvc持有textfield&button。实际上,当我点击按钮时,我会通过plist在tableviewcell上写入textfield的文本,但实际上是临时写入数据,但我想在tableview上永久写入数据。我能做些什么。这是一个基于导航的应用程序 你能给我们

在我的应用程序中,一个是mainviewcontroller,它是uiTableviewcontroller的子类,当单击特定单元格时,它会显示detailviewcontrollerdvc,它是uiviewcontroller的子类。dvc持有textfield&button。实际上,当我点击按钮时,我会通过plist在tableviewcell上写入textfield的文本,但实际上是临时写入数据,但我想在tableview上永久写入数据。我能做些什么。这是一个基于导航的应用程序

你能给我们看一些代码吗

操作按钮的代码是什么?如何重新加载表视图

我猜你是在把单词读入词典?然后从字典中的值加载tableviews cell.text?按下按钮时,是否将文本字段文本写入NSDIctionary?你记得把词典写回plist吗?

好的。 如何加载tableview单元格? 您确定col1的值是NSString类型吗? 您可能应该使用setObject:forKey:而不是SetValue:forKey:。。 tableview是否完全没有更新,或者只是在退出后没有保存? 你是在模拟器上测试还是在设备上测试? 应用程序包是设备上的只读目录,但不在模拟器中。你应使用:

NSString*rootPath=[NSSearchPathForDirectoriesIndomainsDocumentDirectory, NSUserDomainMask, 是对象索引:0]

NSString*plistPath=[rootPath stringByAppendingPathComponent:@listData.plist]

试试这个:

将plist加载到字典:

//Get the path to documents directory
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"listData.plist"];

//if the file does not exist in documents directory, then load from the bundle.
if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
   plistPath = [[NSBundle mainBundle] pathForResource:@"listData" ofType:@"plist"];
}

//load plist into NSMutableDictionary.
nes.plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath]; 
将字典保存到plist:

//Get the path to documents directory
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"listData.plist"];

//Write to documents directory! NOT bundle!!
[nes.plistDict writeToFile:plistPath atomically: YES]; 
也可使用: [nes.plistDict setObject:txtName.text forKey:@col1]; 不是: [nes.plistDict setValue:txtName.text forKey:@col1]


如果这没有帮助,我可以在mainviewcontroller中看到您的cellForRowAtIndexPath吗?

NSString*path=[[NSBundle mainBundle]pathForResource:@listData of Type:@plist]//这里是我的mainviewcontroller对象。nes.plistDict=[[NSMutableDictionary alloc]initWithContentsOfFile:path];[nes.plistDict setValue:txtName.text forKey:@col1];[nes.plistDict writeToFile:原子路径:是];[nes.tableView重新加载数据];我无法理解这个答案&col1是nsstring类型,请详细解释如何重新加载tableview。