2013-10-08 7 views
0

Core Data를 사용하여 로컬로 저장해야하는 웹 서비스에서 JSON을 가져옵니다. 이것은 특정 간격 후에 수행되는 동기화 작업의 일부입니다. 먼저 JSON을 NSManagedObject로 변환하고 이미 로컬에 저장되어 있는지 확인한 다음 기존의 NSManagedObject를 새로 추가해야합니다.JSON에서 NSManagedObject 로의 변환

이미 저장되어 있는지 여부에 관계없이 NSManagedObject를 검사합니다. 다른 NSManagedObjects (또한 술어의 일부가 될 필요가)

아무도이 비 직렬화/직렬화/JSON < -> NSManagedObject 처리 할 수있는 상당한 lib 제안 할 수 있습니다.

답변

1

나는이 목적을 위해 RestKit 사용, 그것은

+0

제안 해 주셔서 감사합니다. 나는 내가 찾고있는 것을 지키기 위해 그것을 조사 할 것이다. 잠시 JAGPropertyConverter의 수정 된 버전을 사용하고 있지만 제 경우에는별로 좋지 않습니다. – Anand

+0

업데이트 :이 개발은 앞으로 큰 변화를 가져오고 RestKit을 구현하는 방법이었습니다. JAGPropertyConvert 라이브러리를 수정하여이 문제를 해결했습니다. 어쨌든 귀하의 답변 주셔서 감사합니다. 아마 다음 프로젝트에서 그것을 사용할 것입니다. – Anand

0

@Eugen

RestKit 복잡 보인다 사용하기 매우 쉽습니다. 꽤 복잡한 JSON을 구문 분석하고 핵심 데이터를 저장해야했습니다. 또한 서버의 데이터가 변경 될 수 있으며 다음 번 구문 분석시 로컬 코어 데이터 값을 새로 삽입하지 않고 업데이트해야합니다.

웹 서비스 호출에서 HTTP 헤더 user = access_token, password = mypassword를 설정하여 인증해야합니다.

RestKit에서 managedObject를 직접 요청하고 매핑하는 방법은 하나 뿐이며 요청을 보내는 동안 해당 메서드 만 제대로 작동하지 않습니다. 나는 403 응답을 얻는다. NSManagedObject와 관련이없는 다른 모든 메소드는 응답에서 좋은 JSON을 인증하고 가져옵니다.

나는 RESTKIT 작업을하기 위해 많은 시간을 낭비했지만 지금은 간단한 방법을 시도해야한다고 생각한다. 누구든지 좋은 lib 또는 다른 제안을 제안 할 수 있습니다.

감사합니다. https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

로 deserialisation 문제로 : :이 같은 JSON 구조에 웹 서비스로 검색 한을 NSData 객체를 변환 할 수 있습니다

0

에 관한 RestKit : 여기에 설명 된 바와 같이 나는 웹 서비스 호출을하고 선호


NSMutableDictionary* json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; 

그럼 당신은 같은과 함께 NSManagedObject를 채우는 https://gist.github.com/pkclsoft/4958148를 사용할 수 있습니다


Entity *entity = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:[self managedObjectContext]]; 
[entity populateFromDictionary:dict]; 

json 구조와 NSManagedObject의 구조가 다른 경우 NSManagedObject를 채우기 위해 NSMutableDictionary를 사용하기 전에 NSMutableDictionary를 조작 할 수 있습니다.