尝试从TextView保存文本(数据)

时间:2014-05-30 00:30:04

标签: objective-c ios7 uitextview

我正在使用Xcode处理iPhone应用程序。

我创建了一个包含textview的视图控制器,我希望用户能够输入可以保存的文本。

截至目前,这是我对此视图控制器的代码。

  -(void)viewDidLoad
{
   [super viewDidLoad];
   self.navigationItem.title = @"Notes";
   self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

 -(void)viewWillAppear:(BOOL)animated{
    self.notesText.text = _notesText.text;
}

-(void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated];

    self.notesText.editable = editing;
    [self.navigationItem setHidesBackButton:editing animated:YES];

    if (!editing) {
        _notesText.text = self.notesText.text;

    }

您看到的代码允许我保存数据,但仅限于应用程序保持打开状态。我可以保存文本,数据将显示并显示应用程序是否保持打开状态。如果我保存文本并关闭应用程序,当我再次打开应用程序时,数据不会出现,所以我假设它没有保存它。

有谁知道为什么会这样。我应该更改或添加什么?

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

我不清楚你在问什么。

  • 如果要将文本永久保存在某处,则应使用Core DataNSUserDefaults之类的内容。
  • 如果您只想保留对备注中文字的引用,请创建NSString属性并在viewWillAppear:中使用该属性。保存屏幕上的内容viewWillDisappear:
  • 如果您只是希望应用程序背景时文本保留在屏幕上,则无需执行任何操作。

答案 1 :(得分:0)

如果要永久保存文本,则必须保存到文件中。如上所述,NSDefaults是一个选项,但你也可以简单地将字符串写为文件,特别是如果它很长。

如果您希望简单地保留文本,即使视图已关闭,您也必须使用根ViewController保留字符串

答案 2 :(得分:0)

如果您需要将数据转储到文件中,可以执行以下操作:

+(void)createFile:(NSString*)receivedString
{
    //Get the file path. Then create a new file if one doesn't exist already or append to it if it does exist
    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"Filename.txt"];


    //create file if it doesn't exist
    if(![[NSFileManager defaultManager] fileExistsAtPath:fileName])
        [[NSFileManager defaultManager] createFileAtPath:fileName contents:nil attributes:nil];

    //append text to file 
    NSFileHandle *file = [NSFileHandle fileHandleForUpdatingAtPath:fileName];
    [file seekToEndOfFile];
    [file writeData:[receivedString dataUsingEncoding:NSUTF8StringEncoding]];
    [file closeFile];
}

但是,如果数据很小,则可以使用NSUserDefaults。

NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
[def setObject:<you text view data> ForKey:@"yourKey"];