如何将NSMutableArray保存到iphone中的plist中

iPh*_*e4s 5 iphone objective-c plist

我是iphone的新手,我想将NSMutableArray数据保存到plist文件中,我的代码是:

NSArray *array = [[NSArray alloc] initWithArray:self.artistDetailsArray];
[self.artistDetailsArray writeToFile:self.path atomically:YES];
Run Code Online (Sandbox Code Playgroud)

但它在我的plist路径中显示0个元素.请任何帮助我.

提前致谢:

以下是我将数据存储到plist和NSUserDefault的代码.它们都不适用于NSMutableArray/NSArray,但适用于NSString.是否存在plist或UserDefault中存储的最大大小限制?NSMutableArray仅包含NSDictionary的文本/集.

请建议我.

- (void)initialiseDataFromLocalStorage
{
       NSFileManager *fileManager = [NSFileManager defaultManager];
       NSError *error;
       NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
       NSString *documentsDirectory = [paths objectAtIndex:0];
       self.path = [documentsDirectory stringByAppendingPathComponent:@"saveLogin.plist"];
       if ([fileManager fileExistsAtPath:self.path] == NO) {
               NSString *pathToDefaultPlist = [[NSBundle mainBundle] pathForResource:@"saveLogin" ofType:@"plist"];
               if ([fileManager copyItemAtPath:pathToDefaultPlist toPath:self.path error:&error] == NO) {
                       NSAssert1(0,@"Failed with error '%@'.", [error localizedDescription]);
               }
       }

   // To get stored value from .plist
       NSDictionary *dict = [[NSDictionary alloc]initWithContentsOfFile:self.path];
       self.ResumedataDictionary = [[NSMutableDictionary alloc]initWithDictionary:dict];
       [dict release];
   self.artistDetailsArray = [[NSMutableArray alloc] initWithArray:[self.ResumedataDictionary objectForKey:@"artistDetailsDict"]];    
   // To get stored value from NSUserDefault
   NSUserDefaults *fetchData = [NSUserDefaults standardUserDefaults];
   self.artistDetailsArray = [fetchData objectForKey:@"artistDetailsDict"];    
}        

-(void)saveDataToLocalStorage
{    
   // To store value into .plist
   NSArray *array = [[NSArray alloc] initWithArray:self.artistDetailsArray];
   [ResumedataDictionary setObject:array forKey:@"artistDetailsDict"];
       [ResumedataDictionary writeToFile:self.path atomically:YES];  

   // To store value into NSUserDefault
   NSUserDefaults *fetchData = [NSUserDefaults standardUserDefaults];
   [fetchData setObject:self.artistDetailsArray forKey:@"artistDetailsDict"];    
}
Run Code Online (Sandbox Code Playgroud)

Par*_*fna 5

NSMutableArray *array=[[NSMutableArray alloc] init];
    [array addObject:@"test"];
    [array writeToFile:@"/Users/parag/test.plist" atomically:YES];
    [array release];
Run Code Online (Sandbox Code Playgroud)

要么

NSMutableArray *array=[[NSMutableArray alloc] init];
[array addObject:@"test121"];
id plist = [NSPropertyListSerialization dataFromPropertyList:(id)array                            format:NSPropertyListXMLFormat_v1_0 errorDescription:@error];


 [plist writeToFile:@"/Users/parag/test.plist" atomically:YES];
Run Code Online (Sandbox Code Playgroud)

请以编程方式查看创建属性列表


Shu*_*ank 0

NSData *serializedData;\n        NSString *error;\n        serializedData = [NSPropertyListSerialization dataFromPropertyList:YourArray(You can use dictionaries.strings..and others too)\n        format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];\n        if (serializedData) {\n        // Serialization was successful, write the data to the file system // Get an array of paths.\n\n       NSArray *documentDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);\n        NSString *docDir = [NSString stringWithFormat:@\xe2\x80\x9d%@/serialized.xml\xe2\x80\x9d,\n         [documentDirectoryPath objectAtIndex:0]];\n        \xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc[serializedData writeToFile:docDir atomically:YES];\n }\n        else {\n        // An error has occurred, log it\n        NSLog(@\xe2\x80\x9dError: %@\xe2\x80\x9d,error); }\n        }\n
Run Code Online (Sandbox Code Playgroud)\n