2015-10-12 2 views
-1

У меня есть файл, хранящийся в каталоге IOS App Documents. Это файл plist, но без расширения файла .plist. Я хочу прочитать его содержимое из кода, но я не могу открыть файл без расширения. Есть ли способ добавить расширение plist или преобразовать файл в plist или любой способ прочитать содержимое файла без расширения.Как читать файл без расширения в Objective C

Это как мой код выглядеть

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"sample.bookmarks"]; 
filePath = [filePath stringByAppendingPathExtension:@"plist"]; 
NSDictionary *dict=[NSDictionary dictionaryWithContentsOfFile:filePath]; 

Заранее спасибо

PS: Если я добавляю .plist расширение в искателе (каким-либо способом), я могу открыть файл и просмотреть содержимое , Поэтому я уверен в его типе.

+0

Попробуйте дать пустое расширение? –

+0

Я попытался дать нулевое расширение. У меня есть путь к файлу в переменной NSString. могу ли я добавить расширение .plist любым способом? или любую другую помощь. –

+0

Попробуйте дать пустую строку как расширение. Пробовал? –

ответ

0

Должна быть возможность загрузить файл Plist, имеет ли он .plist расширение или нет. Предполагая, что имя файла Plist равно sample.bookmarks, необходимо загрузить Plist. Я предполагаю, что корневой элемент Plist - это словарь, потому что вы заявляете, что Plist можно открыть, если он имеет расширение .plist.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"sample.bookmarks"]; 
NSDictionary *dict=[NSDictionary dictionaryWithContentsOfFile:filePath]; 

Единственное изменение состоит в том, что я удалил строку, которая добавляет plist расширение к filePath.

Линия filePath = [filePath stringByAppendingPathExtension:@"plist"]; изменит часть имени файла filePath на sample.bookmarks.plist. Если вы изменили расширение на пустую строку (filePath = [filePath stringByAppendingPathExtension:@""];), то имя файла будет изменено на sample.bookmarks., что не совпадает с sample.bookmarks.

+0

Wow..Thanks много. Это сработало для меня :) –

0

Попробуйте с этим.

pathToFile = [pathToFile stringByAppendingPathExtension:@"plist"]; 
+0

Спасибо за ваш быстрый ответ. Я проверю с этим –