1
일부 매퍼 (예 : Object Mapper)를 사용하여 코어 데이터에 JSON 개체를 저장해야합니다. 특별한개체 매퍼/코어 데이터, 개체 매퍼 nil 값 필드
[
{
"event_id": "1",
"event_name": "Lungo il tevere",
"event_image_url": "https:\/\/www.dayroma.it\/wp-content\/uploads\/2016\/06\/event_fb-9400.jpg",
"event_content": "<b>Lungo il Tevere Roma 2016, bancarelle sulle banchine del Tevere<\/b>\r\n\r\n \r\n\r\n ",
"event_start_date": "2016-07-29",
"event_end_date": "2016-07-30",
"event_start_time": "22:00:00",
"event_end_time": "03:00:00",
"location_name": "Lungotevere",
"location_address": "Piazza Navona 2, Roma",
"location_latitude": "41.897785",
"location_longitude": "12.472971"
},
{
"event_id": "8",
"event_name": "test 7 - VIlla BOrghese",
"event_image_url": "https:\/\/www.dayroma.it\/wp-content\/uploads\/2016\/06\/event_fb-9398.jpg",
"event_content": "TEst villa borghese",
"event_start_date": "2016-07-29",
"event_end_date": "2016-07-30",
"event_start_time": "22:00:00",
"event_end_time": "02:00:00",
"location_name": "Villa Borghese",
"location_address": "Villa Borghese 4, Roma",
"location_latitude": "41.912888",
"location_longitude": "12.485208"
}
]
아무것도, 간단한 JSON 배열 : 나는이 JSON를 검색 휴식 API를 사용하고 있습니다. 데이터 개체로 구문 분석하고 핵심 데이터에 저장해야합니다. 실제로 String 값만 검색되기 때문에 Object를 Core Data Object로 매핑하는 문제가 있습니다. 나머지는 무효입니다. 여기
내 dataController
class DataController: NSObject {
var managedObjectContext: NSManagedObjectContext
override init() {
// This resource is the same name as your xcdatamodeld contained in your project.
guard let modelURL = NSBundle.mainBundle().URLForResource("DataModel", withExtension:"momd") else {
fatalError("Error loading model from bundle")
}
// The managed object model for the application. It is a fatal error for the application not to be able to find and load its model.
guard let mom = NSManagedObjectModel(contentsOfURL: modelURL) else {
fatalError("Error initializing mom from: \(modelURL)")
}
let psc = NSPersistentStoreCoordinator(managedObjectModel: mom)
self.managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
self.managedObjectContext.persistentStoreCoordinator = psc
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
let docURL = urls[urls.endIndex-1]
/* The directory the application uses to store the Core Data store file.
This code uses a file named "DataModel.sqlite" in the application's documents directory.
*/
let storeURL = docURL.URLByAppendingPathComponent("DataModel.sqlite")
do {
try psc.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: storeURL, options: nil)
} catch {
fatalError("Error migrating store: \(error)")
}
}
} 여기
내 객체의 핵심 속성 :
: 맵핑 가능한 구현extension Event {
@NSManaged var eventId: Int
@NSManaged var eventName: String?
@NSManaged var eventImageUrl: String?
@NSManaged var eventContent: String?
@NSManaged var eventStartTime: NSDate?
@NSManaged var eventEndTime: NSDate?
@NSManaged var eventStartDate: NSDate?
@NSManaged var eventEndDate: NSDate?
@NSManaged var locationName: String?
@NSManaged var locationAddress: String?
@NSManaged var locationLatitude: NSNumber?
@NSManaged var locationLongitude: NSNumber?
} 여기
그리고 내 핵심 데이터 개체 모델
class Event: NSManagedObject, Mappable {
override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?) {
super.init(entity: entity, insertIntoManagedObjectContext: DataController().managedObjectContext)
}
required init?(_ map: Map) {
let ctx = DataController().managedObjectContext
let entity = NSEntityDescription.entityForName("Event", inManagedObjectContext: ctx)
super.init(entity: entity!, insertIntoManagedObjectContext: ctx)
mapping(map)
}
func mapping(map: Map) {
eventId <- map["event_id"]
eventName <- map["event_name"]
eventImageUrl <- map["event_image_url"]
eventContent <- map["event_content"]
eventStartTime <- map["event_start_time"]
eventEndTime <- map["event_end_time"]
eventStartDate <- map["event_start_date"]
eventEndDate <- map["event_end_date"]
locationName <- map["location_name"]
locationAddress <- map["location_address"]
locationLatitude <- map["location_latitude"]
locationLongitude <- map["location_longitude"]
}
은}
이 실행 :
let URL = "##### MY API ######"
Alamofire.request(.GET, URL).responseArray { (response: Response<[Event], NSError>) in
let eventsArray = response.result.value
for element in eventsArray! {
print(element)
}
}
내가이 검색 :
data: {
eventContent = "TEst villa borghese";
eventEndDate = nil;
eventEndTime = nil;
eventId = 0;
eventImageUrl = "https://www.dayroma.it/wp-content/uploads/2016/06/event_fb-9398.jpg";
eventName = nil;
eventStartDate = nil;
eventStartTime = nil;
locationAddress = "Villa Borghese 4, Roma";
locationLatitude = nil;
locationLongitude = nil;
locationName = "Villa Borghese";
}
필드의큰 부분은 전무, 당신이 날 이해하는 데 도움이 될 수 있습니다 문제가 무엇입니까? 당신은 당신의 NSNumber 나있는 NSDate을 기다리고 있습니다 때 당신은 심지어 문자열을받을 JSON에서
는 youy
문자열을 날짜로 변환하는 코드는 어디에 있습니까? 모델에는 NSDate 속성이 있지만 JSON에는 문자열이 들어 있습니다. NSDate로 어디로 변환합니까? –
모든 유형의 양식을 json ...으로 변환 할 수 있는지 모르겠다.이 문제는 개체 ID가 int32 또는 int64 인 경우 위도와 경도가 이중이고 모든 날짜가 ... 어디에서 변환 할 수 있습니까? 그들? – dayroma
이러한 속성에 값을 할당 할 때. 아마 당신의 매핑 프레임 워크가 이것을하기로되어 있다고 생각하십니까? 아마 프레임 워크 코드를보고보아야 할 것입니다. 그러나 코드는 자신을 쓰는 것이 어렵지 않습니다. –