2010-12-10 5 views
0

Hallo, ich bin neu in iPhone Programmierung und ich brauche etwas Hilfe.So lesen und schreiben Sie eine PLIST, die wie iPhone Note Apps funktioniert

Ich möchte gerne einen Notizblock ähnliche Apps erstellen, um Benutzern zu ermöglichen, ihre Notizen zu schreiben und zu speichern, ähnlich wie bei den iPhone-Notiz-Apps mit plist, ist es möglich?

ähnlich wie die iphone apps, dass ich alle Notizen, die ich erstellt habe, auflisten kann, ist es möglich.

Das Design ist nicht wichtig für meine Apps cos ist nur für mich zu lernen.

Gibt es jemanden, der mich zu einem guten Tutorial führen könnte?

I You guys in Fortschritte für die Beantwortung danken, wird jede Antwort sehr geschätzt :)

Antwort

1

Der einfachste Weg dies zu tun ist, indem Sie den Text in Ihrem Textview in eine TXT-Datei zu speichern.

//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]; 
} 

Das sollte funktionieren, lass es mich wissen, wenn es nicht funktioniert.

+0

Große hilft !! Danke Jumhyn, ich werde es ausprobieren !!! – Desmond

+0

Beachten Sie, dass Sie saveNotes momentan nicht aufrufen können. Wenn Sie also keine Schaltfläche hinzufügen, werden Ihre Notizen nicht gespeichert. – Jumhyn

0

möglich;)

Die einfachste Möglichkeit zum Speichern von Daten ist NSUserDefaults verwenden.

können also sagen, Sie haben eine Notiz:

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

und wollen, dass es, um es zu speichern, dann tun Sie:

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

aber Sie werden für jede Note auf einen Schlüssel haben, die nicht erwünscht ist;)

So können Sie eine NSArray erstellen und dort Ihre Notizen setzen:

//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"]; 

und wann Sie wollen wieder die Werte erhalten:

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

Beachten Sie, dass Sie NSArrays speichern. Selbst wenn Sie ein NSMutableArray mit "kNotes" gespeichert haben, erhalten Sie später ein unveränderbares NSArray.

Bitte lesen Sie weiter auf NSUserDefaults, da gibt es einige Einschränkungen für die Art von Objekten, die Sie speichern können und nicht speichern können.

Sie können diesen Ansatz verwenden, um den Text selbst zu speichern oder um Pfade von Dateien wie in @Jumhyn Beispiel zu speichern.

Wenn Sie wan't diese ernst zu erhalten über Sie finden Coredata viel nützlicher und eficient;)

Hoffe, dass es

+0

Hey nacho4d, danke für die Antwort, ich werde es auch ausprobieren – Desmond

+0

'NSUserDefaults' sollte eigentlich nur für gespeicherte Einstellungen verwendet werden. Wenn dokumentähnliche Daten persistent sind, ist das Speichern auf der Festplatte oder in Core Data viel effizienter.Einer der beiden letztgenannten Schritte kann auch flexibler sein. Beispielsweise können Sie die gemeinsame Nutzung von Dokumenten aktivieren, damit der Benutzer Notizen auf seinen Computer kopieren kann. –