2012-05-17 2 views
0

Я новичок в разработчике iPhone, создаю ePub-ридер для чтения файлов ePub.не удалось прочитать/записать данные в файл .plist в iPhone

У меня есть plist в моем приложении iphone, и я хочу читать и записывать данные в мой файл .plist, в котором я столкнулся с проблемой.

вот мой фрагмент кода,

Logic: первый я загрузив файл EPUB, .ePub файл будет загружен на этот путь

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil; 
NSLog(@"basePath=%@",basePath); 

выход: - = /Users/krunal/Library/Application Support/iPhone Simulator/5.1/Applications/6B7FCD58-EDF9-44F4-8B33-5F3542536F92/Documents

сейчас, я хочу написать имя Загруженного файла .ePub в файл в мой .plist

code:

NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile: basePath]; 

    [data setObject:[NSNumber numberWithInt:value] forKey:@"value"]; 

    [data writeToFile: plistPath atomically:YES]; 
    [data release]; 

я попробовал это, но я не в состоянии написать в моем .plist файле.

Любая помощь будет рассмотрена.

Спасибо заранее!

ответ

0

вы имели в виду:

NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile: plistPath]; 

?


непроверенный код следующим образом:

Шаг 1: Скопируйте файл в его папке.

NSError *error1; 
BOOL resourcesAlreadyInDocumentsDirectory; 
BOOL copied1; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath1 = [documentsDirectory stringByAppendingString:@"/epub.plist"]; 

resourcesAlreadyInDocumentsDirectory = [fileManager fileExistsAtPath:filePath1]; 

if(resourcesAlreadyInDocumentsDirectory == YES) { 

} else { 

    NSString *path1 = [[[NSBundle mainBundle] resourcePath] stringByAppendingFormat:@"/epub.plist"]; 
    copied1 = [fileManager copyItemAtPath:path1 toPath:filePath1 error:&error1]; 

    if (!copied1) { 
     NSAssert1(0, @"Failed to copy epub.plist. Error %@", [error1 localizedDescription]); 
    } 
} 

Шаг 2: Откройте его

NSMutableDictionary* dict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath1]; 

Шаг 3: Запись данных в ней

[dict setObject:[NSNumber numberWithInt:value] forKey:@"value"]; 
[dict writeToFile:path atomically:YES]; 
+0

http://www.mediafire.com/view/?sj8xqadixrl091b chk это мой файл .. – Krunal

+0

В этом файле: Во-первых, вы пытаетесь переместить файл из папки документов, когда вы его копируете. Тем не менее, вы пытаетесь переместить его, фактически ничего не делая: для выполнения этой работы не определен fileManager. Затем вы пытаетесь переместить его на путь, который не был определен. Не удивительно, что вы не можете открыть файл, который не существует, не говоря уже о его написании. – ader

+0

Шаг 1 :) Скопируйте файл в его папку – ader

0
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile: basePath]; 

данные равна нулю здесь, вы должны инициализировать его:

NSMutableDictionary *data = [[NSMutableDictionary alloc] init]; 

Отредактированный мой ответ, чтобы быть более ясным:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil; 
if (basePath == nil) { 
    return 
} 
NSMutableDictionary *data = [[NSMutableDictionary alloc] init]; 
[data setObject:[NSNumber numberWithInt:value] forKey:@"value"]; 
NSString *plistPath = [NSString stringWithFormat:@"%@/name.plist", basePath]; 
[data writeToFile: plistPath atomically:YES]; 
[data release]; 
+0

еще моих данных 'nil' – Krunal

+0

Так [[NSMutableDictionary Alloc] инициализации] возвращает нильполугруппы к вам? Это странно! Проверьте свой код, поскольку я тестировал свой ответ в тестовом проекте, и он работал хорошо. – GreyHands

+0

http://www.mediafire.com/view/?sj8xqadixrl091b chk this – Krunal

0

Это вспомогательная скважина для использования NSUserDefault, то данные будут сохранены в PLIST в качестве следующего кода:

- (void)setOverviewGroupInstrument:(BOOL)isGroupded { 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setObject:[Your array] forKey:[Your Key]]; 
[prefs synchronize]; 
} 

Th ан вы можете читать:

- (NSMutableArray*)getOverviewInstrumentList { 
    return [prefs objectForKey:[Your Key]]; 
} 
Смежные вопросы