2016-11-09 9 views
0

私は次がありますスウィフト3時限イベント

このイベントがトリガされた
let processURLS = processingViewController() 
    Timer.scheduledTimer(timeInterval: 1, 
         target: self, 
         selector: #selector(processURLS.getURLsToSend), 
         userInfo: nil, 
         repeats: true) 

が、私は次のエラーを受信し、これが動作しない理由を私はよく分からない

2016- 11-09 14:47:00.504932 AcumenJLR [3414:905978] *によりキャッチされない例外をアプリ を終了 'NSInvalidArgumentException'、理由: ' - [AcumenJLR.homeViewController getURLsToSend]:インスタンス0x100d25c60に送られ、認識されないセレクター ' *まずスローコールスタック:(0x1816721c0 0x1800ac55c 0x181679278 0x181676278 0x18157059c 0x18215c8f8 0x1816208f4 0x181620608 0x18161fec4 0x18161dac0 0x18154c048 0x182fd2198 0x1875372fc 0x187532034 0x100114620 0x1805305b8)のlibC++ abi.dylib:ここではタイプの キャッチされない例外で終了NSException

getURLsToSend方法

func getURLsToSend() { 
    //create a fetch request, telling it about the entity 
    let fetchRequest: NSFetchRequest<URLsToSend> = URLsToSend.fetchRequest() 
    let context = getContext() 
    do { 
     //Get results 
     let searchResults = try getContext().fetch(fetchRequest) 
     print ("num of results = \(searchResults.count)") 

     //You need to convert to NSManagedObject to use 'for' loops 
     for urls in searchResults as [NSManagedObject] { 
      //get the Key Value pairs (although there may be a better way to do that... 
      //print("\(urls.value(forKey: "url"))") 
      let currentURL = urls.value(forKey: "url")! 
      //print(urls.value(forKey: "url")!) 

      completeLoadAction(urlString: currentURL as! String) { code in 
       if (code == 200){ 
        context.delete(urls) 
       } 
      } 

     } 
    } catch { 
     print("Error with request: \(error)") 
    } 
+0

コントローラークラスに 'getURLsToSend'関数がないために発生します – alexburtnik

+0

' processURLS'への参照を保持し、セレクターを 'target:self、.processUrl selector:#selector(getURLsToSend)'に変更してください。 。私はセレクタを実行することはできませんので、あなたの変数processURLがメモリから削除されたことと思います。アップデート: –

+0

しかし、それはセレクタが正しくないこともそうです、あなたは*目標* = 'processUrls'と*セレクタ* =' getURLsToSend' –

答えて

1

ターゲット/アクションパターンに従ってselectorで指定された方法は、現在のクラスselfこの場合targetで指定されたクラス内で宣言されなければなりません。

どちらかtargetを変更したり、selfのメソッドを実装します。

+0

を使用する必要があり、私は自分のおかげでメソッドを実装しました –

-1

あなたはこの方法では、いくつかのPARAMTERを持っていることかもしれされますが、そこ

から任意の値を送信していません