如何读取和编写像iphone笔记应用程序一样工作的plist

时间:2010-12-10 05:29:22

标签: iphone cocoa cocoa-touch xcode ios4

嗨,我是iphone编程的新手,我需要一些帮助。

我想创建一个类似记事本的应用程序来让用户编写和保存他们的笔记,类似于使用plist的iphone笔记应用程序,这是可能的吗?

类似于iphone应用程序,我能够列出我创建的所有笔记,这是可能的。

设计对我的应用程序并不重要,因为我只能学习。

有没有人可以指导我一个好的教程?

我感谢你们提前回复,任何回复都将不胜感激:)

2 个答案:

答案 0 :(得分:1)

最简单的方法是将textview中的文本保存为.txt文件。

//NotesViewController.h

#import <UIKit/UIKit.h>


@interface NotesViewController : UIViewController {
    UITextView *textView;
}
@property (nonatomic, retain) UITextView *textView;

-(void)loadNotes;
-(void)saveNotes;

@end



//NotesViewContoller.m

#import "NotesViewController.h"


@implementation NotesViewController

@synthesize textView;

-(void)viewDidLoad {
     textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
     self.view = textView;
     [self loadNotes];
}

-(void)loadNotes {
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"savedText.txt"];
    NSString *text = [[NSString alloc] initWithContentsOfFile:path];
    UIColor *clear = [[UIColor alloc] initWithRed:255 green:255 blue:255 alpha:0];
    textView.backgroundColor = clear;
    textView.font = [UIFont fontWithName:@"Arial" size:18.0];
    textView.text = text;
}

-(void)saveNotes {
    [textView resignFirstResponder];
    NSString *textToSave = [textView text];

    if (textToSave == nil || textToSave.length == 0) {
        textToSave = @"";
    }

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"savedText.txt"];
    [textToSave writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL];
}

这应该有效,如果没有,请告诉我。

答案 1 :(得分:0)

可能;)

存储数据的最简单方法是使用NSUserDefaults。

所以,请假设您有一个注释:

NSString *mynote = [NSString stringWithFormat:@"My first note"];

并希望它保存它,然后你做:

NSUserDefaults *userDefs = [NSUserDefaults standardUserDefaults];
[userDefs setObject:myNote forKey:@"kMyNote"];

但是你必须为每个音符添加一个键,这是不可取的;)

所以你可以创建一个NSArray并将你的笔记放在那里:

//inmutable, cannot be changed later
NSArray *notes = [NSArray arrayWithObjects:myNote, nil];

//or you can try with mutable arrays
//NSMutableArray *notes = [NSMutableArray array]; 
//[array addObject:myNote];
//[array addObject:myNote2];//, add more elements as needed

//save them
[userDefs setObject:notes forKey:@"kNotes"];

当您想再次获取值时:

NSArray *savedNotes = [userDefs objectForKey:@"kNotes"];

请注意存储NSArrays。即使您存储了带有“kNotes”的NSMutableArray,稍后您将获得一个不可改变的NSArray。

请继续阅读NSUserDefaults,因为您可以存储和不能存储的对象类型有一些限制。

您可以使用此方法存储文本本身,也可以使用@Jumhyn示例存储文件路径。

如果你不想认真对待这一点,你会发现CoreData更有用和更有效;)

希望有所帮助