можем ли мы изменить текст на uiSwitch

можем ли мы изменить текст, который находится на UISwitch, то есть включить и выключить. Я пробовал следующий код, но его сбой

crashLog:

Завершение работы приложения из-за неперехваченного исключения NSInvalidArgumentException, причина: '- [UISwitch setLeftLabelText:]: нераспознанный селектор отправлен в экземпляр 0x4c65020' Поскольку мне нужно поле "читать" в таблице ассоциаций user_message, у меня есть 3 объекта. User.php namespace Console \ ...

Я пытаюсь настроить в Doctrine 2.0 ассоциацию сущностей один-ко-многим / многие-к-одному. Поскольку мне нужно поле "читать" в таблице ассоциаций user_message, у меня есть 3 объекта.

User.php

namespace Console\Entity;

use Doctrine\Common\Collections\ArrayCollection;

/**
 * @Entity(repositoryClass="Console\Repository\User")
 * @Table(name="user")
 */
class User {

    /**
     * @Id 
     * @GeneratedValue 
     * @Column(type="integer")
     */
    protected $id;

    /**
     * @OneToMany(targetEntity="Message", mappedBy="users", cascade={"all"}, orphanRemoval=true)
     * @JoinTable(name="user_message",
     *      joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
     *      inverseJoinColumns={@JoinColumn(name="message_id", referencedColumnName="id", unique=true)}
     * )
     */
    protected $messages;

    public function __construct(){
        $this->messages = new ArrayCollection();
    }

    public function addMessage(Message $message){
        $message->addUser($this);
        $this->messages[] = $message;
    }

}

Message.php

namespace Console\Entity;

use Doctrine\Common\Collections\ArrayCollection;

/**
 * @Entity(repositoryClass="Console\Repository\Message")
 * @Table(name="message")
 */
class Message {

    /**
     * @Id 
     * @GeneratedValue 
     * @Column(type="integer")
     */
    protected $id;

    /**
     * @Column(type="text")
     */
    protected $value;

    /**
     * @OneToMany(targetEntity="User", mappedBy="messages", cascade={"all"}, orphanRemoval=true)
     * @JoinTable(name="user_message",
     *      joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
     *      inverseJoinColumns={@JoinColumn(name="message_id", referencedColumnName="id", unique=true)}
     * )
     */
    protected $users;

    public function __construct(){
        $this->users = new ArrayCollection();
    }

    /**
     * @param Console\Entity\User $user 
     */
    public function addUser(User $user){
        $this->users[] = $user;
    }

}

UserMessage.php

namespace Console\Entity;

/**
 * @Entity
 * @Table(name="user_message")
 */
class UserMessage {

    /**
     * @Id 
     * @GeneratedValue 
     * @Column(type="integer")
     */
    protected $id;

    /**
     * @Column(name="user_id", type="integer")
     */
    protected $userId;

    /**
     * @Column(name="message_id", type="integer")
     */
    protected $messageId;

    /**
     * @Column(name="is_read", type="boolean")
     */
    protected $isRead;

    public function isRead(){
        return $this->isRead;
    }

    public function setIsRead($flag = true){
        $this->isRead = (bool)$flag;
    }

}

dump.sql (сгенерирован из doctrine)

CREATE TABLE IF NOT EXISTS `message` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type_id` int(11) DEFAULT NULL,
  `value` longtext NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_B6BD307FC54C8C93` (`type_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip_id` int(11) DEFAULT NULL,
  `username` varchar(50) NOT NULL,
  `password` varchar(64) NOT NULL,
  `created` datetime NOT NULL,
  `last_action` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_8D93D649F85E0677` (`username`),
  UNIQUE KEY `UNIQ_8D93D649A03F5E9F` (`ip_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

CREATE TABLE IF NOT EXISTS `user_message` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `message_id` int(11) NOT NULL,
  `is_read` tinyint(1) NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


ALTER TABLE `message`
  ADD CONSTRAINT `message_ibfk_1` FOREIGN KEY (`type_id`) REFERENCES `message_type` (`id`);

ALTER TABLE `user`
  ADD CONSTRAINT `user_ibfk_1` FOREIGN KEY (`ip_id`) REFERENCES `ip` (`id`);

А теперь мой тест:

$user = $em->find('Console\Entity\User', 1);

$message = new Console\Entity\Message();
$message->setValue('TestNachricht');

$user->addMessage($message);

$em->persist($user);
$em->flush();

Что случилось: таблица сообщений заполнена, user_message пусто. Что я могу сделать, чтобы использовать таблицу user_message и что мне нужно сделать, чтобы установить en message как "прочитанное"?

Спасибо за помощь

6
задан mYkon 23 May 2011 в 12:22
поделиться