Подтвердить что ты не робот

Доступ к локальному файлу с помощью NSURL

Я пытаюсь получить доступ к хранилищу XML файлов в каталоге ресурсов. Я использую NSURL для доступа к этому файлу с помощью NSURLConnection (этот файл будет заменен для удаленной службы в будущем).

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL 
URLWithString:@"file:///XMLTest.xml"] 
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

NSURLConnection *connection=[[NSURLConnection alloc] initWithRequest:request delegate:self];
if (connection) {
    // Create the NSMutableData to hold the received data.
    // receivedData is an instance variable declared elsewhere.
    response = [[NSMutableData data] retain];
} else {
    NSLog(@"Could not create connection");
}

Класс, который запускает соединение, реализует методы NSURLConnection:

connection:willCacheResponse: 
connection:didReceiveData: 
connectionDidFinishLoading: 
connectionDidFinishLoading:

Как только я запускаю это, симулятор умирает, на консоль не печатаются сообщения, поэтому я не понимаю, где искать. Любые идеи, или я просто делаю это совершенно неправильно?

4b9b3361

Ответ 1

Это также сработает:

NSString *path = [[NSBundle mainBundle] pathForResource:@"XMLTest" ofType:@"xml"];

Надеюсь, это поможет!

Ответ 2

Попытка загрузить что-либо из корня файловой системы неправильная, неправильная, неправильная. Определенно неправильно на устройстве, и, вероятно, неправильно на симуляторе. К каталогу ресурсов следует обращаться через класс NSBundle.

Например, чтобы получить URL-адрес для файла с именем "Data.txt" в ресурсах, используйте следующее:

NSURL *MyURL = [[NSBundle mainBundle]
    URLForResource: @"Data" withExtension:@"txt"];

Ответ 3

Если вы хотите получить URL-адрес из пути (например, потому что вы создали файл в NSTemporaryDirectory(), и вам нужно получить его как URL-адрес), вы можете легко сделать это с помощью метода NSURL fileURLWithPath:

NSString* tempPath = NSTemporaryDirectory();
NSString* tempFile = [tempPath stringByAppendingPathComponent:fileName];
NSURL* URL = [NSURL fileURLWithPath:tempFile];

Гораздо проще, чем + URLWithString: и другие методы.

Ответ 4

Вы можете попробовать это

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"file://localhost/Users/userName/Desktop/XMLTest.xml"]];

здесь предполагается, что файл находится на рабочем столе.

Ответ 5

Swift 3:

    let myFileName = "somefilename"
    let myURL = Bundle.main.url(forResource: myFileName, withExtension: "png")