RISOLTO (Grazie Regexident)File Nome NSString aggiunge inutili% 20 nello spazio
Ho un app che passa il percorso del file di un PDF a un metodo init personalizzato -(id)init
. Si aggiunge al tavolo e quando è selezionata, chiama l'istruzione else per un file inesistente:
- (void) gridView:(AQGridView *)gridView didSelectItemAtIndex:(NSUInteger)index {
NSLog (@"Selected theArgument=%d\n", index);
UIViewController *viewController = [[[UIViewController alloc]init]autorelease];
{
//if file is built-in, read from the bundle
if (index <= 3)
{
// first section is our build-in documents
NSString *fileURLs = [_documentIconsURLs objectAtIndex:index];
NSLog(@"file url -%@", fileURLs);
viewController = [[[xSheetMusicViewController alloc]initWithContentURL:fileURLs]autorelease];
}
//if file is external, read from URL
else
{
// second section is the contents of the Documents folder
NSString *fileURL = [_documentIconsURLs objectAtIndex:index];
NSLog(@"file url -%@", fileURL);
NSString *path;
NSString *documentsDirectoryPath = [self applicationDocumentsDirectory];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
path = [[paths objectAtIndex:0] stringByAppendingPathComponent:fileURL];
if ([[NSFileManager defaultManager] fileExistsAtPath:documentsDirectoryPath])
{
viewController = [[[xSheetMusicViewController alloc]initWithDocumentURL:fileURL]autorelease];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure!" message:@"The Selected File Does Not Exist"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alert show];
[alert release];
return;
}
}
[self.navigationController setNavigationBarHidden:YES animated:NO];
[UIView beginAnimations:@"animation" context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.navigationController.view cache:YES];
[self.navigationController pushViewController:viewController animated:NO];
[UIView commitAnimations];
}
}
Così ogni volta che ho un documento senza spazio nel suo nome, si spinge e INIT. Ma quando il nome del file ha uno spazio, dice che non esiste. E quando rimuovo il metodo if-else, è init, ma si blocca perché il file non esiste. Ho provato a sostituire il% 20 nel percorso del file con uno spazio regolare, ma il metodo continua a chiamare la parte else.
Quindi, il percorso del file non è standardizzato e leggibile, oppure il mio altro metodo è sbagliato?
Giudicando dal "% 20" e dalla denominazione della variabile ("... URL") nel codice, sembra che tu stia confondendo gli URL dei file (codifica gli spazi come "% 20", ecc.) Con i percorsi dei file (utilizza spazi, eccetera). – Regexident
l'url del file viene convertito in una stringa in un metodo apple dall'esempio documentInteraction. L'url viene passato a un controller non-DI. Quindi, come lo aggiusto? – CodaFi