【问题标题】:Swift-Can't convert core data to url parametersSwift - 无法将核心数据转换为 url 参数
【发布时间】:2018-12-18 07:58:39
【问题描述】:

我正在尝试构建一个跟踪设备位置的小应用程序。所以将位置保存到核心数据中。但无法将其转换为 json 以将此信息发送到服务器。我收到以下错误

2018-12-18 13:08:33.583580+0530 My App[6696:144278] [General] 引发了未捕获的异常。

2018-12-18 13:08:33.583605+0530 我的应用程序[6696:144278] [常规] JSON 写入中的类型无效 (__NSDate)。

2018-12-18 13:08:33.604814+0530 我的应用[6696:144278] [常规] ( 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 覆盖

    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)
    }

【问题讨论】:

    标签: ios swift cocoa core-data


    【解决方案1】:

    错误很明显:timestamp 的类型显然是Date,而 JSON 不支持这种类型。

    例如添加一个计算属性以将Date 对象转换为 UNIX 时间戳或日期字符串

    var unixTimeStamp : Double {
        return timestamp.timeIntervalSince1970
    }
    

    并通过将字典声明为 [String:Any] 来摆脱这个丑陋的 as AnyObject 演员表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-09
      • 2018-11-20
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多