2013-08-01 5 views
-1

У меня есть код, который импортирует настройки в мое приложение из электронной почты, но он работает только в том случае, если импортирует настройки, которые уже существуют.Создание plist, если его не существует

Это код, который я использую в настоящее время для импорта настроек и записи на plist.

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
if (url){ 

     NSDictionary *openedDictionary = [NSDictionary dictionaryWithContentsOfURL:url]; 

     // get paths from root direcory 
     NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
     // get documents path 
     NSString *documentsPath = [paths objectAtIndex:0]; 
     // get the path to our Data/plist file 
     NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"]; 
     NSDictionary *originalDictionary = [NSDictionary dictionaryWithContentsOfFile:plistPath]; 

     NSMutableDictionary *newDictionary = [originalDictionary mutableCopy]; 
     for (NSString *key in openedDictionary) { 
      if (!newDictionary[key]) { 
       newDictionary[key] = openedDictionary[key]; 
      } 
     } 

     [newDictionary writeToFile:plistPath atomically:YES]; 

    } 
    NSError *error = nil; 
    if (![[NSFileManager defaultManager] removeItemAtURL:url error:&error]) { 
     NSLog(@"error while deleting: %@", [error localizedDescription]); 
    } 
    return YES; 
} 

Но что мне нужно сделать, это создать что Data.plist, если это не существует, или же переименовать PLIST, который по электронной почте, чтобы Data.plist и хранить его при наличии уже не Data.plist.

ответ

1
NSFileManager *defaultManager = [NSFileManager defaultManager]; 

    if ([defaultManager fileExistsAtPath:plistPath]) 
    { 
     // rename the file 
    } 
    else 
    { 
     //create empty file 
    } 

это то, как вы можете создать пустой plist файл

NSDictionary *dict = [NSDictionary dictionary]; 

//you can create file in any path in app sandbox, for example I'm creating in document dir. 
NSString *FilePathWithName = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
FilePathWithName = [FilePathWithName stringByAppendingPathComponent:@"name.plist"]; 
[dict writeToFile:FilePathWithName atomically:YES]; 

и для переименования то, что вы можете сделать это, вы можете загрузить файл .plist/.property (который вы хотите переименовать) в качестве словаря и напишите этот словарь с новым именем (напишите plist, как указано выше) и удалите файл .plist/.property.

1
NSFileManager *defaultManager = [NSFileManager defaultManager]; 
    if ([defaultManager fileExistsAtPath:plistPath]) { 
     //Do stuff with path 
    } 
    else { 
     //Write a plist to the path 
    } 
+0

Спасибо, это работает, чтобы проверить, есть ли что-нибудь там или сейчас, но как мне сделать создание пустого plist/переименование моего .properties файла? –

+0

Я не знаю о переименовании файла .properties, но при написании словаря в файл будет создан ваш plist. Здесь есть большая длинная страница: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/PropertyLists/CreatePropListProgram/CreatePropListProgram.html – Kevin

3

Вот как я могу создать список свойств с помощью кода и получить данные от него.

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

if (![fileManager fileExistsAtPath: path]) 
{ 
    path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat: @"plist.plist"] ]; 
} 




NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSMutableDictionary *data; 

if ([fileManager fileExistsAtPath: path]) 
{ 
      data = [[NSMutableDictionary alloc] initWithContentsOfFile: path]; 
} 
else 
{ 
    // If the file doesn’t exist, create an empty dictionary 
    data = [[NSMutableDictionary alloc] init]; 
} 

//To insert the data into the plist 
int value = 5; 
[data setObject:[NSNumber numberWithInt:value] forKey:@"value"]; 
[data writeToFile: path atomically:YES]; 
[data release]; 

// To retrieve the data from the plist 
NSMutableDictionary *savedStock = [[NSMutableDictionary alloc] initWithContentsOfFile: path]; 
int value1; 
value1 = [[savedStock objectForKey:@"value"] intValue]; 
NSLog(@"%i",value1); 
[savedStock release]; 
Смежные вопросы