2016-07-22 5 views
2

Im используя Сферу для моего приложения IOS и для таблицы У меня есть ключ «имя» первичногоUpdate Realm быстры

   let application = Application() 
       application.domain = app.domain 
       application.name = app.name 
       realm.add(application) 

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

app?.name = newName 

ошибка

Primary key can't be changed after an object is inserted. 

Как я могу решить эту проблему?

это, как я объявляю первичный ключ

override static func primaryKey() -> String? { 
     return "name" 
    } 
+0

Не могли бы вы показать нам свой первичный ключ? –

+0

@VishalSonawane i обновил вопрос о том, как я объявляю первичный ключ – spaceMonkey

+1

Ваш основной ключ - это имя. Вы не можете изменить первичный ключ. Вы можете удалить объект и создать новый – Idan

ответ

3

После того как вы вставляете объект с primary key вы не можете изменить его:

От Realm Docs

первичный ключ добавляется к Realm, первичный ключ не может быть изменен.

Который оставит вас несколько вариантов:

  • Извлеките и повторно объект
  • Изменить первичный ключ к чему-то, что не меняется, как id
  • опускает Primary Key. Если вы его не определяете, у вас нет первичного ключа, что означает, что у вас может быть более одного объекта с тем же значением для этого свойства, и он не будет проиндексирован этим свойством.
+1

Это работает, потому что авария происходит, как только я устанавливаю 'app.name = newName 'перед тем, как даже сделать' realm.add' – spaceMonkey

+0

, я закончил удаление и добавление нового объекта. но это привело меня к проблеме, когда объект имеет отношения. делая все эти отношения nil – spaceMonkey

+0

Просто держите отношения локально для передачи. – Idan

Смежные вопросы