2015-09-26 6 views
0

Я хочу загрузить удаленный url и использовать локальные ресурсы (изображение, css, js ...), поэтому я наследую NSURLProtocol.swift custom NSURLProtocol error

import Foundation 

class MyURLProtocol: NSURLProtocol { 

    override class func canInitWithRequest(request: NSURLRequest) -> Bool { 
     print(request.URL!.absoluteString) 
     if request.URL!.absoluteString.hasSuffix("jquery.min.js"){ 
      return true 
     } 
     return false 
    } 

    override class func canonicalRequestForRequest(request: NSURLRequest) -> NSURLRequest{ 
     let urlPath = NSBundle.mainBundle().pathForResource("jquery.min", ofType: "js", inDirectory:"res/js") 
     let url = NSURL.fileURLWithPath(urlPath!) 
     let mutableReqeust = request.mutableCopy() as! NSMutableURLRequest 
     mutableReqeust.URL = url 
     return mutableReqeust 
    } 
} 

регистр протокола новый адрес в AppDelegate

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    NSURLProtocol.registerClass(MyURLProtocol) 
    return true 
} 

мои ресурсы структура каталогов

res 
└── js 
    └── jquery.min.js 

когда код выполняется, то ошибка, как следовать

0x111785900 <+0>: pushq %rbp 
    0x111785901 <+1>: movq %rsp, %rbp 
    0x111785904 <+4>: pushq %rbx 
    0x111785905 <+5>: pushq %rax 
    0x111785906 <+6>: movq %rdi, %rbx 
    0x111785909 <+9>: movq 0x118(%rbx), %rdi 
-> 0x111785910 <+16>: movq 0x368(%rdi), %rax [WebThread(7):EXC_BAD_ACCESS(code=1.address=0x368)]. 
    0x111785917 <+23>: movq %rax, 0x508(%rbx) 

I вход по-прежнему много раз с lldb, но код остается в 0x111785910

Что случилось с кодом?

+0

Что-то, наверное, ноль. - Вы не дали достаточно информации. В какой строке * вашего * кода это произошло? Какие другие сообщения появились на консоли? – Paulw11

+0

http: //xx.xx.xx.xx/login.jsp? Title = no http: //xx.xx.xx.xx/login.jsp? Title = no 10 http: //xx.xx .xx.xx/login.jsp? title = no http: //xx.xx.xx.xx/login.jsp? title = no http: //xx.xx.xx.xx/login.jsp ? название = нет HTTP: не //xx.xx.xx.xx/js/ustc.js Http: //xx.xx.xx.xx/js/jquery.min.js (lldb) продолжают Процесс 15696 возобновление (lldb) continue Процесс 1 5696 возобновление (lldb) –

+0

Вам нужно посмотреть в трассировке стека и посмотреть, в какой строке вашего кода он выбрасывает исключение. Или установите точки останова и выполните свой код и посмотрите, где он сработает. – Paulw11

ответ