我是编程新手,在尝试使用带有泛型的 Realm 管理 iOS 应用程序中的数据时遇到了麻烦。为了清楚地分离 MVC 模型,我制作了三个 swift 类,如下所示
模型定位器.swift
import UIKit
import RealmSwift
class ModelLocator : NSObject {
class var sharedInstance : ModelLocator {
struct Singleton {
static var instance = ModelLocator()
}
return Singleton.instance
}
var tasks = TaskModel<Object>()
override init() {
print("ModelLocator init!")
}
func getTask() -> TaskModel<Object> {
return tasks
}
func setTask(array:TaskModel<Object>) -> TaskModel<Object> {
tasks = array
return tasks
}
}
模型数据.swift
import UIKit
import RealmSwift
let realm = try! Realm()
class TaskModel <T: Object>: NSObject {
var resources : Results<T>!
func getResources() -> Results<T> {
return resources
}
func fetchData(database: T) {
self.resources = try! Realm().objects(database.dynamicType).sorted("date", ascending: false)
}
func saveTaskData(number : Int, item : T ){
let taskData:TaskData = TaskData()
try! realm.write {
switch number {
case 0:
taskData.id = item as! Int
break
case 1:
taskData.title = item as! String
break
default:
break
}
}
}
}
任务数据.swift
import RealmSwift
class TaskData: Object {
dynamic var id = 0
dynamic var title = ""
dynamic var category: Category?
// category.id:Int, category.name:String, category.priority:Int
dynamic var contents = ""
dynamic var date = NSDate()
/* set id as primary */
override static func primaryKey() -> String {
return "id"
}
}
并在 ViewController.swift 中调用它,如下所示
视图控制器
import UIKit
import RealmSwift
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tbView: UITableView!
var taskModel: TaskModel<Object> = TaskModel()
var taskArray: Results<TaskData>?
var category: Category = Category()
override func viewDidLoad() {
super.viewDidLoad()
let modelLocator = ModelLocator()
taskModel = modelLocator.getTask()
let database = "TaskData"
taskArray = taskModel.fetchData(TaskData) // <- Where there is error in line
print(taskArray)
在构建时,上面的行显示一个错误说
“无法将类型'(TaskData).Type'(又名'TaskData.Type')的值转换为预期的参数类型'Object'”
我知道左右中的类型不匹配,但不知道如何更正。(也就是我不熟悉的意思,谷歌搜索也没有帮助我)
谁能告诉我应该如何修复此代码?