«NSError» не поддерживается в качестве свойства RLMObject. Все свойства должны быть примитивами

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

«NSError» не поддерживается в качестве свойства RLMObject. Все свойства должны быть примитивами, NSString, NSDate, NSData, RLMArray или подклассами RLMObject.

вот так выглядит моя модель...

public class Place: Object {

// mongo id
public dynamic var _id: String = ""
// google id
public dynamic var google_id: String = ""
// name
public dynamic var name: String = ""
// score
public dynamic var score: Double = 0
// types
public let types = List<TypeObject>()
public dynamic var typeFormat: String = ""
// address
public dynamic var address: Address?
// geographic location
public dynamic var location: GeoJSON?
// phone
public dynamic var phone: Phone?
// open now
public dynamic var openNow: Bool = false
// hours
public let hours = List<Hours>()
// utc offset
public dynamic var utcOffset: Int = 0
// website
public dynamic var website: String = ""
// price level
public dynamic var priceLevel: Int = 0
// created at, updated at
public dynamic var createdAt: String = ""
public dynamic var updatedAt: String = ""
// visit
public let history = List<Visit>()
public dynamic var visitValue: VisitValue?
public dynamic var voteValue: VoteValue?
// reviews
public let reviews = List<Review>()
// photos
public let photos = List<Photo>()

...

класс модели огромен, поэтому я пропустил инициализаторы. Следует отметить, что этот класс не содержит никаких типов NSError, но содержит функции, геттеры и сеттеры, которые не вызывают никаких ошибок. Я не знаю, влияет ли это на модель вообще, но до этого момента все они работали нормально. Все эти ошибки начали происходить, когда я обновился до Swift 2 и XCode 7. Я действительно запутался, любая помощь была бы отличной.

ОБНОВЛЕНИЕ Моя проблема заключалась в том, что я случайно добавил var error: NSError? между двумя функциями в моей модели, когда оптимизировал код. Я не смог его найти, потому что моя модель набита вспомогательными функциями, а что нет. Поэтому я надеюсь, что это поможет любому, кто столкнется с этой проблемой, просто оставить модели в покое и поместить любой код, не связанный со схемой, вне самой модели.


person Andrew Aquino    schedule 30.09.2015    source источник


Ответы (1)


Можете ли вы добавить «точку останова исключения»? Если это так, вы можете выяснить, какое свойство в вашей модели вызывает проблему на основе переменной name, переданной в этот метод в RLMProperty.mm:

initSwiftPropertyWithName:indexed:property:instance:

который в конечном итоге вызывает setTypeFromRawType, где генерируется ошибка.

Я предполагаю, что это одно из свойств отношения объекта, потому что ошибка возникает, когда он оценивает вашу модель и проверяет, указывает ли свойство на подкласс Realm Object.

person Adam Fish    schedule 30.09.2015
comment
Я добавил NSLog в ту функцию, о которой вы сказали (спасибо за это), и вот что я получил... 2015-09-30 20:54:51.885 Fomo[98378:331319] error 2015-09-30 20:54:51.885 Fomo[98378:331319] (null) { значит, в моей схеме Object есть переменная типа NSError? - person Andrew Aquino; 01.10.2015
comment
вау, большое спасибо за этот комментарий, он действительно помог. Мне пришлось просмотреть все мои схемы и найти переменную с именем «ошибка», я обнаружил, что она зажата между двумя функциями. Я случайно написал это там, думая, что это все еще находится в пределах области действия функции. Этот баг занял у меня целый день -____- Просто я самый большой болван видимо. - person Andrew Aquino; 01.10.2015
comment
Извините, что не добрался до этого раньше, но рад, что вы поняли это! - person Adam Fish; 05.10.2015