将文本框数据写入Plist

我有一个提交button的文本框。 我需要当我按提交和文本框中的数据应写在plist。 我尝试了下面的代码,但没有任何更改plist。我创build了名为sample.plist的plist。

  -(void) SubmitAction { NSString *path = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *finalPath = [path stringByAppendingPathComponent:@"sample.plist"]; NSMutableDictionary *plistDict = [NSMutableDictionary dictionaryWithContentsOfFile:finalPath]; NSMutableArray *titleArray=[plistDict valueForKey:@"title"]; [titleArray addObject:textbox1.text]; [plistDict setValue:titleArray forKey:@"title"]; [plistDict writeToFile:finalPath atomically:NO]; } 

下面是在plist中创build的数组

 <plist version="1.0"> <dict> <key>title</key> <array/> </dict> </plist> 

请告诉我还需要做什么..这是我的错

你可以在我身边使用这个工作正常

 -(void)writeToPlist { BOOL success; NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [documentPaths objectAtIndex:0]; NSString *documentPlistPath = [documentsDirectory stringByAppendingPathComponent:@"XYZ.plist"]; NSString *bundlePath = [[NSBundle mainBundle] bundlePath]; NSString *bundlePlistPath = [bundlePath stringByAppendingPathComponent:@"XYZ.plist"]; if([fileManager fileExistsAtPath:documentPlistPath]){ NSMutableDictionary *documentDict = [NSMutableDictionary dictionaryWithContentsOfFile:documentPlistPath]; NSMutableArray *valArray = [NSMutableArray arrayWithArray:[self readFromPlist]]; int index = [valArray count]; [valArray insertObject:@"lastObject" atIndex:index]; [documentDict setObject:valArray forKey:@"title"]; success =[documentDict writeToFile:documentPlistPath atomically:NO]; } else { NSError *error; BOOL written = [fileManager copyItemAtPath:bundlePlistPath toPath:documentPlistPath error:&error]; if (written) { NSMutableDictionary *documentDict = [NSMutableDictionary dictionaryWithContentsOfFile:documentPlistPath]; NSMutableArray *valArray = [NSMutableArray arrayWithArray:[self readFromPlist]]; int index = [valArray count]; [valArray insertObject:@"lastObject" atIndex:index]; [documentDict setObject:valArray forKey:@"title"]; success =[documentDict writeToFile:documentPlistPath atomically:NO]; }else { NSLog(@"Plist couldnot be copied from bundle to directory!!!"); } } } -(NSArray*)readFromPlist { NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [documentPaths objectAtIndex:0]; NSString *documentPlistPath = [documentsDirectory stringByAppendingPathComponent:@"XYZ.plist"]; NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:documentPlistPath]; NSArray *valueArray = [dict objectForKey:@"title"]; return valueArray; } 

用你的textbox.textreplace@“lastobject”;用你的sample.plistreplaceXYZ.plist。

尝试:
首先检查文件是否存在

  bool b=[[NSFileManager defaultManager] fileExistsAtPath:filePath]; if (!b) { NSLog(@"The file does not exist"); return; } ........ [titleArray addObject:[NSString stringWithFormat:@"%@", textbox1.text]]; [plistDict setObject:titleArray forKey:@"title"]; 

现在,如果该文件不存在,请按照苹果文档https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/PropertyLists/CreatePropListProgram/CreatePropListProgram.html以编程方式创build该文&#x4EF6;

尝试使用,

 [plistDict setObject:titleArray forKey:@"title"]; 

并检查数组是否有值或nil对象

试试这个代码..

 NSString* plistPath = nil; NSFileManager* manager = [NSFileManager defaultManager]; if (plistPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"sample.plist"]) { if ([manager isWritableFileAtPath:plistPath]) { NSMutableDictionary *plistDict = [NSMutableDictionary dictionaryWithContentsOfFile:finalPath]; NSMutableArray *titleArray=[plistDict valueForKey:@"title"]; [titleArray addObject:textbox1.text]; [plistDict setValue:titleArray forKey:@"title"]; [plistDict writeToFile:finalPath atomically:NO]; [manager changeFileAttributes:[NSDictionary dictionaryWithObject:[NSDate date] forKey:NSFileModificationDate] atPath: [[NSBundle mainBundle] bundlePath]]; } } 

我希望这可以帮助你…

这为我工作我的“Words.plist”

 <dict> <key>Root</key> <array> <string>sunday</string> <string>monday</string> <integer>44</integer> </array> </dict> NSString *StringsFromPList = [[NSBundle mainBundle] bundlePath]; NSString *itemPositionPlistLocation = [StringsFromPList stringByAppendingPathComponent:@"Words.plist"]; _myDictionary= [[NSDictionary alloc] initWithContentsOfFile:itemPositionPlistLocation]; NSArray * items = [_myDictionary objectForKey:@"Root"]; NSLog(@"%@", items); 

希望能帮助到你 :)