Swift와 함께 iOS 8 앱을 만들려고하는데 JSON에서 데이터를 다운로드하여 저장해야하지만 핵심 데이터 메커니즘을 이해하지 못합니다. (나는 안드로이드에서 ORM Lite와 sqlite-net이있는 Windows Phone을 사용하고있다).코어 데이터를 동 기적으로 사용하는 방법은 무엇입니까?
"GetAllNewsTask"는 데이터베이스의 모든 뉴스를 반환하고 "UpdateAllNewsTask"는 JSON을 다운로드하고 구문 분석하고 데이터베이스에 저장하고 모든 News를 반환하는 두 가지 작업을 수행하려고합니다.
엔티티 객체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에 구문 분석 된 JSON 문자열을 변환 getEntitiesFromJson 기능
(현재 harcoded 빈 배열을 반환 newsDao.findAll는(), 내가 모든 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를 재정의 할 때 예외가 발생했습니다.
계속하기 전에 올바른 방법입니까? 그렇다면 유용한 방법을 시연하는 훌륭한 자습서가 있습니까? 올바른 방법이 없다면?
내 대답은 도움이되지 않았다 제공 찾을 수 있는가? –