Если у вас возникли проблемы с отправкой писем с помощью PHP, рассмотрите альтернативу, например PHPMailer или SwiftMailer .
Обычно я использую SwiftMailer всякий раз, когда мне нужно для отправки писем с PHP.
require 'mail/swift_required.php';
$message = Swift_Message::newInstance()
// The subject of your email
->setSubject('Jane Doe sends you a message')
// The from address(es)
->setFrom(array('jane.doe@gmail.com' => 'Jane Doe'))
// The to address(es)
->setTo(array('frank.stevens@gmail.com' => 'Frank Stevens'))
// Here, you put the content of your email
->setBody('New message
Here goes the rest of my message
', 'text/html');
if (Swift_Mailer::newInstance(Swift_MailTransport::newInstance())->send($message)) {
echo json_encode([
"status" => "OK",
"message" => 'Your message has been sent!'
], JSON_PRETTY_PRINT);
} else {
echo json_encode([
"status" => "error",
"message" => 'Oops! Something went wrong!'
], JSON_PRETTY_PRINT);
}
Подробнее о том, как использовать SwiftMailer, см. в официальной документации .
Вы очень хорошо объяснили проблему самостоятельно:
class Person: Hashable {
Лицо не является NSObject. Objective-C может видеть только тип класса, основанного на NSObject. Поэтому ваш тип Person невидим для Objective-C. Но ваша декларация @objc func
предназначена для функции, которая принимает массив Person - и мы только что сказали, что Person является невидимым для Objective-C. Таким образом, ваша декларация @objc func
является незаконной. Objective-C нельзя показать эту функцию, потому что ее невозможно отобразить.
Вам нужно изменить объявление класса, чтобы начать следующим образом:
class Person: NSObject {
... и тогда вам, конечно, придется внести необходимые коррективы в реализацию класса. Но это изменение сделает вашу декларацию @objc func
законной. (NSObject - Hashable, поэтому объем работы, необходимый для этой адаптации, может быть не очень большим.)
С этой меньшей информацией я могу только попытаться предложить вам поставить это перед объявлением Person
.
@objc(Person)
class Person {
...
}
Я получал это, потому что я объявил класс Notification
самостоятельно, и он возился с классом Notification Foundation.
@objc func playerItemDidReachEnd(notification: Notification) {...}
Поэтому я изменил его на Foundation.Notification
@objc func playerItemDidReachEnd(notification: Foundation.Notification) {...}