2013-03-28 184 views
3

我试图将一些项目存储到pList中。这里是阵列循环:将数组保存到plist

for (id obj in items) 
NSLog(@"obj: %@", obj); 

输出的NSLog:

2013-03-27 13:00:40.072 mycode[47436:c07] obj: Red 
2013-03-27 13:00:40.073 mycode[47436:c07] obj: Blue 
2013-03-27 13:00:40.073 mycode[47436:c07] obj: Green 

//的arrayWithObjects工作。但我不知道如何(循环?)通过我的项目保存到plist文件...

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


    NSFileManager *filemgr; 
    filemgr = [NSFileManager defaultManager]; 

    if ([filemgr fileExistsAtPath: path]) { 
     NSLog(@"%@", path); 

    NSMutableDictionary *plist = [[NSDictionary dictionaryWithContentsOfFile:path] mutableCopy]; 
    NSMutableArray *newArray = [[[NSMutableArray alloc] init] autorelease]; 
    newArray = [NSArray arrayWithObjects:@"Red", @"Green", @"Blue" nil]; // <--- WORKS! 
    newArray = [NSArray arrayWithObjects:items, nil]; // <-- ? 
    [plist setObject:newArray forKey:@"Hi"]; 
    [plist writeToFile:path atomically:YES]; 
    [plist release]; 


    } else { 
     NSLog(@"File not found"); 
    } 

    [filemgr release]; 

回答

1

也许这段代码可以帮助你。

NSMutableArray *newArray = [[[NSMutableArray alloc] init] autorelease]; 
NSMutableArray *targetArray = [[[NSMutableArray alloc] init] autorelease]; 

newArray = [NSArray arrayWithObjects:@"Red", @"Green", @"Blue" nil]; 
for(int i=0;i<newArray.count;i++) 
{ 
[targetArray addObject:[newArray objectAtIndex:i]]; 

} 
[plist setObject:targetArray forKey:@"Hi"]; 
[plist writeToFile:path atomically:YES]; 

或其他方法

NSMutableArray *targetArray = [[[NSMutableArray alloc] init] autorelease]; 

for (id obj in items) 
{ 
[targetArray addObject:items]; 
} 
[plist setObject:targetArray forKey:@"Hi"]; 
[plist writeToFile:path atomically:YES]; 

希望这有助于!