NSTimerを使用してある間隔でメッセージを送信しています。NSTimerターゲットメッセージを別のクラスに送信します。そのuserInfoパラメータを抽出します。
{
// ....
var params : [String] = []
params.append(conversion)
params.append(message)
let timer = NSTimer(fireDate: date, interval: 60, target: self, selector: Selector("importTextMessage.sendMessage:"), userInfo: params, repeats: true)
NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
// ...
}
func sendMessage(params: [String]){ ...}
私もスウィフト2.2構文に変更しようとしている:ここではコードです
let timer = NSTimer(fireDate: date, interval: 60, target: self, selector: #selector(importTextMessage.sendMessage(_:)), userInfo: params, repeats: true)
が、それは何も変わりません。
"インスタンスに送信された未知のセレクタ"について投稿されたすべての質問から、「セレクタにコロンを挿入してUserInfoから引数を取得することがわかっています」が含まれています。何が間違っているのか理解する。
何を注意する:
関数のパラメータとNSTimerのUserInfo DOマッチアップを介して渡されたパラメータ。どちらも文字列の配列です。
何かを意味する場合、sendMessageが呼び出されている間、コードは失敗しています。それは実際にメッセージを送信することはありません。
私は1人のユーザーが示唆されているように、引数としてタイマーを取るために私のsendMessageのための私のコードを変更しようとした
「リテラル文字列が有効なObjective-Cのセレクタではありません」という奇妙な警告取得しています:func sendMessage(timer: NSTimer){
をしかし、それでも同じエラーが発生します。
事前にお手数をおかけしていただきありがとうございます。
編集:ここでタイマーを実行機能は次のとおりです。{ VAR電話:アクティブダブル VAR:のInt VAR周波数:ダブル VAR://はsaveText(ANYOBJECT送信者)funcをデータ @IBActionのすべてを保存メッセージ:文字列 VAR日:NSDate
phone = Double(currentNumber)!
active = 1
message = myTextView.text
date = myDatePicker.date
switch self.frequency.selectedRowInComponent(0) {
case 0:
frequency = 1
case 1:
frequency = 3
case 2:
frequency = 6
case 3:
frequency = 24
case 4:
frequency = 168
case 5:
frequency = 744
default:
frequency = 8760
}
importTextMessage.seedMessage(phone, active: active, frequency: frequency, message: message, date: date)
print(date)
let conversion : String = "+1" + String(Int(phone))
//importTextMessage.sendMessage("Ryan", to: conversion, message: message)
var params : [String] = []
params.append(conversion)
params.append(message)
//importTextMessage.sendMessage(params)
let timer = NSTimer(fireDate: date, interval: 60, target: self, selector: #selector(importTextMessage.sendMessage(_:)), userInfo: params, repeats: true)
//
NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
}
EDIT:正確なエラーMSSG:
認識されないセレクターがインスタンスに送信0x7ffe6b915460 2016-07- 25 13:26:09.092嫌がらせあなたケイト[53524:9000621] ***によりキャッチされない例外 'NSInvalidArgumentException'、理由にアプリを終了:「 - [Harass_Your_Kate.AddMessageViewControllerのsendMessageは:]:認識されていないセレクタからインスタンス0x7ffe6b915460
これは正しいので、おそらくdownvotedするべきではありませんが、なぜ私は興味があります。 – BaseZen
私はあなたの答えをdownvoteしませんでしたが、コードを助けるものではありません。私はあなたと他の回答者が持っている正確なことを持っていますが、それはエラーを変更しません。まだ未知の例外 'NSInvalidArgumentException'のためにアプリケーションを終了すると、インスタンスに送信された認識できないセレクタ0x13601f910 ' – Ryan
Swift3がメソッドの最初のパラメータの前にアンダースコアを追加する場合 –