Swift-Не удается преобразовать данные ядра в параметры URL - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь создать небольшое приложение, которое отслеживает местоположение устройства.Так что сохраните местоположение в основных данных.Но не могу преобразовать его в json для отправки этой информации на сервер.Я получил следующие ошибки

2018-12-18 13: 08: 33.583580 + 0530 Мое приложение [6696: 144278] [Общие] Возникла исключительная ситуация.

2018-12-18 13: 08: 33.583605 + 0530 My App [6696: 144278] [General] Неверный тип записи в формате JSON (__NSDate).

2018-12-18 13: 08: 33.604814 + 0530 My App [6696: 144278] [General] (0 CoreFoundation 0x00007fff4af112db __exceptionPreprocess + 171 ........)

Загрузка данных из основных данных

func loadingFromCoreData() -> [String:Dictionary<String,AnyObject>] 
{
        var locationsArray: [String:Dictionary<String,AnyObject>] = [:]
        var count = 0
        if let context = (NSApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext {
            do {
                locationDataInstance = try context.fetch(LocationInformation.fetchRequest())
            } catch {

            }
        }
        print("IN Loading From database")
        for locationDI in locationDataInstance {
            var location_info: [String:AnyObject]=[:]
            location_info["latitude"] = locationDI.latitude as AnyObject
            location_info["longitude"] = locationDI.longitude as AnyObject
            location_info["timestamp"] = locationDI.timestamp as AnyObject
            locationsArray["\(count)"] = location_info
            count = count + 1
        }
        return locationsArray
}

Словарь в Json coversion

    let parameters:Dictionary<String,AnyObject> = ["name":devicename as AnyObject,"loctioninfo":loadingFromCoreData() as AnyObject]
    do {
        let js = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted)
        print(js)
    } catch {
        print(error.description)
    }

1 Ответ

0 голосов
/ 18 декабря 2018

Ошибка довольно очевидна: тип timestamp, очевидно, Date, и JSON не поддерживает этот тип.

Добавьте вычисляемое свойство для преобразования объекта Date в метку времени UNIX или датустрока например

var unixTimeStamp : Double {
    return timestamp.timeIntervalSince1970
}

И избавиться от этого уродливого as AnyObject приведения, объявив словарь как [String:Any]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...