Ответ 1
Это также сработает:
NSString *path = [[NSBundle mainBundle] pathForResource:@"XMLTest" ofType:@"xml"];
Надеюсь, это поможет!
Я пытаюсь получить доступ к хранилищу 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:
Как только я запускаю это, симулятор умирает, на консоль не печатаются сообщения, поэтому я не понимаю, где искать. Любые идеи, или я просто делаю это совершенно неправильно?
Это также сработает:
NSString *path = [[NSBundle mainBundle] pathForResource:@"XMLTest" ofType:@"xml"];
Надеюсь, это поможет!
Попытка загрузить что-либо из корня файловой системы неправильная, неправильная, неправильная. Определенно неправильно на устройстве, и, вероятно, неправильно на симуляторе. К каталогу ресурсов следует обращаться через класс NSBundle
.
Например, чтобы получить URL-адрес для файла с именем "Data.txt" в ресурсах, используйте следующее:
NSURL *MyURL = [[NSBundle mainBundle]
URLForResource: @"Data" withExtension:@"txt"];
Если вы хотите получить URL-адрес из пути (например, потому что вы создали файл в NSTemporaryDirectory(), и вам нужно получить его как URL-адрес), вы можете легко сделать это с помощью метода NSURL fileURLWithPath:
NSString* tempPath = NSTemporaryDirectory();
NSString* tempFile = [tempPath stringByAppendingPathComponent:fileName];
NSURL* URL = [NSURL fileURLWithPath:tempFile];
Гораздо проще, чем + URLWithString: и другие методы.
Вы можете попробовать это
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"file://localhost/Users/userName/Desktop/XMLTest.xml"]];
здесь предполагается, что файл находится на рабочем столе.
Swift 3:
let myFileName = "somefilename"
let myURL = Bundle.main.url(forResource: myFileName, withExtension: "png")