2012-05-01 83 views
0

我想將來自服務器的令牌保存到plist中。我不確定如果我必須創建一個plist冷杉,或者它可以自動使用我的Document directroy中的以下代碼創建。但是,我無法創建一個plist並在其中寫入我的字典。 這裏是我的代碼iOS:讀寫Plist

-(void)writeToPlist:(NSString*)value forkey:(NSString *)key 

{ 
    NSLog(@"Write plist here"); 

    //NSError *error; 

    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentDirectory=[paths objectAtIndex:0]; 

    NSString* path=[documentDirectory stringByAppendingFormat:@"Util.plist"]; 

    NSLog(@"The path is %@",path); 

    NSFileManager *fileManager=[NSFileManager defaultManager]; 

    NSMutableDictionary *data; 

    if(![fileManager fileExistsAtPath:path]) 
    { 
     path=[[NSBundle mainBundle]pathForResource:@"Util" ofType:@"plist"]; 
    } 


    [data setObject:value forKey:key]; 

    [data writeToFile:path atomically:YES];//will it create the plist? 


} 

回答

0

你爲什麼不救它NSUserDefaults的使用?

這裏是一個例子代碼:

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; 
if([standardUserDefaults objectForKey:@"your-key-goes-here"] == nil) //this means you don't have that key 
{[standardUserDefaults setValue:@"your-value-goes-here" forKey:@"your-key-goes-here"];} 
[standardUserDefaults synchronize]; 

不要忘了在最後的同步。

當您需要數據時,您需要撥打standartUserDefaults:valueForKey方法。

希望這有助於..

0

我找到了一種方法來輕鬆編程方式創建一個plist文件,這個工作對我來說:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingString:@"/myFile.plist"]; 
if (![[NSFileManager defaultManager] fileExistsAtPath:path]){ 
    NSDictionary *emptyDic = [NSDictionary dictionary]; 
    [emptyDic writeToFile:path atomically:YES]; 
} 

更改裏面是什麼if語句,它會工作。