我想用Swift做一个iOS 8应用程序,我需要从JSON下载数据并保存它,但我不明白核心数据机制。 (我来自Android,ORM Lite和Windows Phone与sqlite-net)。如何同步使用核心数据?
我试图做两个任务,“GetAllNewsTask”从数据库返回所有新闻,“UpdateAllNewsTask”下载JSON并解析它,保存到数据库并返回所有新闻。
功能getEntitiesFromJson变换解析的JSON字符串实体对象
class func getEntitiesFromJson(json: JSONValue) -> [NewsEntity]?{
var rList : [NewsEntity] = []
var array = json.array
var countItr = array?.count ?? 0
if(array == nil){
return nil
}
if(countItr > 0){
for index in 0...countItr-1{
var news = NewsEntity()
var jsonVal = array?[index]
news.id = jsonVal?["id"].integer ?? 0
........
rList.append(news)
}
}
return rList
}
GetAllNewsTask(newsDao.findAll()返回当前的harcoded空数组,我没有找到如何选择所有NewsEntity同步)
class GetAllNewsTask:NSOperation {
var result : Array<News>?
override func main() ->(){
result = executeSync()
}
func executeSync() -> Array<News>? {
let newsDao = NewsDAO()
let entities = newsDao.findAll()
return NewsModel.getVOsFromEntities(entities)
}
UpdateAllNewsTask
class UpdateAllNewsTask:NSOperation {
var result : Array<News>?
override func main() ->(){
result = executeSync()
}
func executeSync() -> Array<News>? {
let response = JsonServices.getAllNews()
var managedObjectContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!
var entityDescription = NSEntityDescription.entityForName("NewsEntity", inManagedObjectContext: managedObjectContext)
var entities = NewsModel.getEntitiesFromJson(response)
//TODO insert new, update existing and remove old
return GetAllNewsTask().executeSync()
}
我尝试要添加或更新所有NewsEntity并删除旧的,在Java中我使用List.removeAll(Collection<T>)
但我找不到如何在Swift中执行此操作。 当我在NewsEntity类中覆盖equals和hashcode时,我得到了一个异常。
在继续之前,它是正确的方法吗? 如果是的话,有什么好的教程来演示如何做到这一点? 如果没有什么是正确的方法?
没有我的回答没有帮助? – 2014-10-08 16:09:32