1

我正在使用 plists 来保存/加载 NSMutableArray,

编码:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *prsPath = [documentsDirectory stringByAppendingPathComponent:@"records.plist"];

prs = [[NSMutableArray alloc] initWithContentsOfFile:prsPath];

当我在代码的其他地方使用最后一句代码时,它说:“prsPath”未声明。(我在 ViewDidLoad 中加载我的代码)当我添加一个对象时,它不会保存它,它甚至不会出现。(加载最后一句添加)

4

2 回答 2

3

我正在使用这种方法,它的工作 100%

- (void) writeToPlist: (NSString*)fileName withData:(NSMutableArray *)data
{
     NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
     NSString *finalPath = [documentsDirectory stringByAppendingPathComponent:fileName];

     [data writeToFile:finalPath atomically: YES];
     /* This would change the firmware version in the plist to 1.1.1 by initing the NSDictionary with the plist, then changing the value of the string in the key "ProductVersion" to what you specified */
}

以及这种从 plist 文件中读取的方法:

- (NSMutableArray *) readFromPlist: (NSString *)fileName {
     NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
     NSString *finalPath = [documentsDirectory stringByAppendingPathComponent:fileName];

     BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:finalPath];

     if (fileExists) {
          NSMutableArray *arr = [[NSMutableArray alloc] initWithContentsOfFile:finalPath];
          return arr;
     } else {
          return nil;
     }
}

希望它可以帮助你。

于 2012-08-25T12:51:36.223 回答
0

[[NSMutableArray alloc] initWithContentsOfFile:prsPath]加载一个 plist ant,用它初始化一个数组。您 plist 是否已经存在于该路径中?您可能还想记录 prsPath 以查看它是否正确。

通常你会首先通过调用来检查路径中是否存在 plist [[NSFileManager defaultManager] fileExistsAtPath:prsPath]。如果没有,则初始化一个空数组。

稍后您通过调用保存它[prs writeToFile:prsPath atomically:YES]

请注意,您不能NSMutableArrays从 plist 初始化。从 plist 加载的数组和字典始终是不可变的。您必须首先将 plist 加载到 an 中NSArray,然后NSMutableArray从中初始化 an NSArray

于 2012-08-25T12:53:28.737 回答