我试图将Realm集成到我的iOS应用中,因此数据可以持续存在。
现在我收到此错误:
由于未捕获的异常终止应用' RLMException',原因: '财产'部分'被宣布为' NSArray',这不是 支持的RLMObject属性类型。所有属性都必须是基元, NSString,NSDate,NSData,NSNumber,RLMArray,RLMLinkingObjects,或 RLMObject的子类。看到 https://realm.io/docs/objc/latest/api/Classes/RLMObject.html了解更多信息 。信息#&39;第一次抛出调用堆栈:...
有人可以告诉我我做错了吗?
持有sections
的对象类。
class Workout: Object {
dynamic var image: String = ""
dynamic var name: String = ""
dynamic var type: String = ""
dynamic var sections:[String] = []
var dayOne = List<Exercise>()
var dayTwo = List<Exercise>()
var dayThree = List<Exercise>()
var dayFour = List<Exercise>()
var dayFive = List<Exercise>()
func addExerciseToSection(sectionName: String, exerciseName: Exercise) {
if sectionName == "Day 1" {
dayOne.append(exerciseName)
} else if sectionName == "Day 2" {
dayTwo.append(exerciseName)
} else if sectionName == "Day 3" {
dayThree.append(exerciseName)
} else if sectionName == "Day 4" {
dayFour.append(exerciseName)
} else if sectionName == "Day 5" {
dayFive.append(exerciseName)
}
}
func getWorkoutInSection(workout: Workout, section: Int) -> List<Exercise>? {
if section == 0 {
return workout.dayOne
} else if section == 1 {
return workout.dayTwo
} else if section == 2 {
return workout.dayThree
} else if section == 3 {
return workout.dayFour
} else if section == 4 {
return workout.dayFive
}
return nil
}
}
答案 0 :(得分:5)
以下错误只是告诉您,您无法将某些类型分配给Realm Objects
,并指定您可以使用的类型:
所有属性必须是基元,NSString,NSDate,NSData,NSNumber, RLMArray,RLMLinkingObjects或RLMObject的子类。
取代这一行:
dynamic var sections:[String] = []
可能会解决您的错误。虽然,问题在于您构建数据的方式。看看Sectioned tableView example。加载视图时可以动态创建表视图部分,无需将其保存到领域对象。
如果您确实要保存section
,可以考虑使用其他域对象来执行此操作,例如:
class Sections: Object{
dynamic var section: String = ""
}
答案 1 :(得分:0)
它清楚地说你的属性resources :contacts do
resources :tasks
end
===============
create_table "tasks", force: :cascade do |t|
t.text "content"
t.date "due"
t.boolean "is_completed", default: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "contact_id"
end
========
是数组并且它不受支持,你可以尝试使用dynamic var sections:[String] = []
其中StringObject是Realm类包含你的字符串
答案 2 :(得分:0)
如果您不想保留sections属性,则需要通过
忽略它 override static func ignoredProperties() -> [String] {
return ["sections"]
}