Ios 核心数据模型设计或架构
我计划使用核心数据来存储我的应用程序数据。然而,当我试图设计模型实体的体系结构时,我发现大多数核心数据教程都将获取数据、插入数据、删除数据与ViewController混合在一起。这些操作不是按照信息系统设计原则放在模型的实现中吗?? 例如,有一个基本模型类:Ios 核心数据模型设计或架构,ios,swift,core-data,Ios,Swift,Core Data,我计划使用核心数据来存储我的应用程序数据。然而,当我试图设计模型实体的体系结构时,我发现大多数核心数据教程都将获取数据、插入数据、删除数据与ViewController混合在一起。这些操作不是按照信息系统设计原则放在模型的实现中吗?? 例如,有一个基本模型类: class BaseModel { var modelName: String! // insert func insertNewObjectToModel(managedContext:NSManagedObjectContext
class BaseModel {
var modelName: String!
// insert
func insertNewObjectToModel(managedContext:NSManagedObjectContext)->BaseModel {
return NSEntityDescription.insertNewObjectForEntityForName(modelName, inManagedObjectContext: managedContext) as! BaseModel
}
// get
func fetchObject(predicate: NSPredicate)...
// delete
func deleteObject(object:BaseModel)...
}
然后我有一个模型Student继承自BaseModel类,因此它继承了插入、查询、删除等方法。然后在ViewController类中,如果用户想要添加新对象,只需调用student.insertNewObjectcontext。
我真的很困惑这样的设计或封装是否有效。我读过Ray的《核心数据教程》,也读过苹果的核心数据示例。但他们似乎都将模型相关的操作放在了ViewController中。
例如,我从Ray的书中挑选了几行代码:
func populateDealsCountLabel() {
// 1
let fetchRequest = NSFetchRequest(entityName: "Venue")
fetchRequest.resultType = .DictionaryResultType
// 2
let sumExpressionDesc = NSExpressionDescription()
sumExpressionDesc.name = "sumDeals"
// 3
sumExpressionDesc.expression = NSExpression(forFunction: "sum:", arguments: [NSExpression(forKeyPath: "specialCount")])
sumExpressionDesc.expressionResultType = .Integer32AttributeType
// 4
fetchRequest.propertiesToFetch = [sumExpressionDesc]
// 5
do {
let results = try coreDataStack.context.executeFetchRequest(fetchRequest) as! [NSDictionary]
let resultDict = results.first!
let numDeals = resultDict["sumDeals"]
numDealsLabel.text = "\(numDeals!) total deals"
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}
英语不是我的母语,所以我不确定你是否明白我的描述想要表达什么。但我希望你的评论和回答!提前谢谢 当我使用核心数据时,我将逻辑代码放在扩展中。我使用这个库来减少一些工作。教程很少涉及任何意义上的最佳实践。他们试图教授特定的概念、技术或API。当编写真实代码时,总是遵循你认为是好的实践和设计的任何东西。在教学特色的同时,更多地提升质量。我同意“AVI”,从架构/正确性/知识分配的角度来看,大多数教程和苹果样例代码都是一团糟。@利奥,谢谢您的建议,稍后我会考虑使用MigalRead。但现在我想知道,如果我自己实现核心数据模型,最好的架构是什么?@Avi,我理解你的意思,谢谢。然而,你能给我一些关于建筑的建议吗。根据实体继承,我认为良好的体系结构会影响我的应用程序的性能。╯□╰o