2014-11-18 3 views
0

Мне понадобилось имя файла пути к файлу, чтобы содержать дату.iOS: путь к архиву, содержащий дату

Однако, теперь, когда у меня это работает ... Я понял, что не могу получить свой путь к архиву, так как я не буду знать дату открытия приложения.

Есть в любом случае, чтобы посмотреть в путь к архиву в качестве шаблона означает:.

item.archive% @% @, где может быть что угодно (например, дата)?

Я использую NSKeyedArchiver. Мой файл сохраняет - моя проблема заключается в получении файла после повторного открытия приложения, так как я не знаю, что такое дата.

UPDATE:

В моей функции itemArchivePath:

NSString *filename = [[NSString alloc] initWithFormat:@"items.archive.%@", date];

return [documentDirectory stringByAppendingPathComponent:filename];

Поскольку я приложил дату к имени файла, если я пойду звонить itemArchivePath - он выиграл» У меня есть дата, потому что она не знает, что такое дата. В любом случае, я могу получить путь к элементу с помощью шаблона - будет сохранен только один файл, и я знаю, что начало пути будет item.archive.

+0

Было бы немного яснее, если бы мы могли видеть код, показывающий, где вы сохраняете свои объекты и как это сделать. –

+0

@GuyKogus См. Обновление. И благодарю вас. –

+0

Является ли 'date'' NSString' или 'NSDate'? – rmaddy

ответ

1

Этот код позволит вам получить все URL-адреса ваших архивных файлов:

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSURL *documentDirectory = [fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]; 
NSError *error; 
NSArray *contents = [fileManager contentsOfDirectoryAtURL:documentDirectory 
           includingPropertiesForKeys:nil 
                options:NSDirectoryEnumerationSkipsSubdirectoryDescendants | NSDirectoryEnumerationSkipsPackageDescendants | NSDirectoryEnumerationSkipsHiddenFiles 
                error:&error]; 
if (contents) 
{ 
    NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) { 
     return [[(NSURL *)evaluatedObject lastPathComponent] hasPrefix:@"items.archive."]; 
    }]; 
    contents = [contents filteredArrayUsingPredicate:predicate]; 
    NSLog(@"Archive items: %@", contents); 
} 
else 
{ 
    NSLog(@"Failed to get contents:\n%@", error); 
} 

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

+0

Спасибо! Ценю вашу помощь! –

1

Используйте NSFileManager, чтобы получить пути всех файлов в папке архива. В зависимости от того, как вы архивируете, у вас будет одно имя файла, которое вы можете использовать, или список файлов (дат), которые вы можете показать своему пользователю.

+0

Хорошо, я посмотрю. Благодарим за комментирование. Цените помощь. –

 Смежные вопросы

  • Нет связанных вопросов^_^