gpt4 book ai didi

ios - 使用 setValuesForKeysWithDictionary 和 JSON 设置 NSDate 时出现问题

转载 作者:行者123 更新时间:2023-11-29 13:31:14 25 4
gpt4 key购买 nike

所以我很高兴地使用 JSON 和 setValuesForKeysWithDictionary 将数据猛击到我的系统中,直到我遇到一个具有 NSDate 属性的对象。

JSON 包含以下格式的日期:

BackOrderDate: "2011-03-15T00:00:00"

这给了我一个错误:

'NSInvalidArgumentException', reason: 'Unacceptable type of value for attribute: property = "BackOrderDate"; desired type = NSDate; given type = __NSCFString; value = 2011-03-15T00:00:00

我将 JSON.NET 与 MVC 一起使用,并对其进行了以下设置:

JsonSerializerSettings serializerSettings = new JsonSerializerSettings();
serializerSettings.Converters.Add(new Newtonsoft.Json.Converters.IsoDateTimeConverter());
string json = JsonConvert.SerializeObject(objects, Formatting.None, serializerSettings);
return Content(json);

关于如何处理这个问题有什么想法吗?我不想失去 setValuesForKeysWithDictionary 的使用,因为它太他妈快了。

最佳答案

我假设您正在使用 Core Data(因为 Core Data 会产生您发布的错误)并且您的实体有一个名为“BackOrderDate”且类型为“Date”的属性。

问题是 JSON 没有“日期”数据类型。在您的 .NET 代码中,您已通过告知 JSON 序列化将日期转换为 IS 格式的字符串来处理此问题。

在将数据传递给 setValuesForKeysWithDictionary: 之前,您需要在 iOS 应用中解析 JSON 数据时执行相反的转换。

您可以使用 NSDateFormatter 将字符串解析为 NSDate,您可以轻松地在网络上找到很多这样的示例。

在调用 setValuesForKeysWithDictionary: 之前执行解析的方式取决于您使用什么来解析 JSON。

如果您正在使用 Apple 的 NSJSONSerialization,您可能应该使用 NSJSONReadingMutableContainers 选项。然后进入字典并在调用 setValuesForKeysWithDictionary: 之前用 NSDate 对象替换日期字符串。

如果您使用其他一些 JSON 解析器(如 SBJSON),我不知道进行替换的最佳方法。

关于ios - 使用 setValuesForKeysWithDictionary 和 JSON 设置 NSDate 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11836205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com