问题标签 [overcoat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2498 浏览

ios - iOS Mantle + Overcoat

我正在查看 Overcoat 库,我收集到的是一个扩展 Mantle 库的库。

地幔:https ://github.com/Mantle/Mantle/ 大衣:https ://github.com/gonzalezreal/Overcoat

Mantle 和 Overcoat github 页面不断提到创建 Mantle 模型,但我想知道如何生成 Mantle 模型?我是手动输入还是使用 Xcode xcdatamodel 文件以可视方式构建它,然后生成 sublass + 之后修改该文件?

在 Core Data 中,使用 Interface Builder 在 xcdatamodel 文件中创建实体,然后使用 Xcode 的 Editor > Create NSManagedObject 子类。

我们是否对 Mantle 做同样的事情,然后从 NSManagedObject 更改为 MTLModel ?

当我们决定更新 xcdatamodel 文件中的 Core Data 实体时会发生什么?如果我们再次重新生成模型文件,我们是否必须将所有这些更改重新添加到 NSManagedObject 类中?

对这个过程超级困惑。

0 投票
0 回答
461 浏览

ios - Overcoat - 映射多种类型的服务器响应

当响应 JSON 具有不同的信封键时,我无法弄清楚如何映射响应数组:

示例响应:

我已经设置了一个 ServerResponse 对象:

它会导致使用空数据创建一个 SPCCountry 对象。我想要一个 SPCCountry / SCCurrency 对象的列表。

ANSWER: 对于每个唯一的响应路径,您需要创建一个 OCVResponse 子类,并在类方法中返回类和路径:

响应类的实现只需要实现:

0 投票
1 回答
339 浏览

ios - 在外衣包络响应的情况下如何自动映射到地幔模型类?

我正在使用地幔进行模型映射,并使用外衣进行网络请求。Overcoat 自动将结果映射到模型,但是当有包络响应时,我可以获得自定义 Overcoat 响应。但问题是 Overcoat 响应是 NSCFDictionary 响应,但它应该是 MantleModel 响应。

我知道如何手动将结果转换为 mantleModel:

但是对我来说应该用大衣来完成。我是古玩,无论如何都可以通过 Overcoat 来完成,而不是手动转换结果。

0 投票
1 回答
228 浏览

ios - 为每个映射到类的资源路径覆盖自定义服务器响应

我正在尝试在 iOS 应用程序中使用 REST 服务。我正在使用大衣。

在我的OVCHTTPRequestOperationManager子类中,我有以下内容:

我想像这样序列化一个 JSON 有效负载:

到目前为止一切都很好,但是当我尝试从响应对象中获取卡片时,我得到了一个NSDictionary对象数组,而不是一个SCCreditCard对象数组。

有人有这个吗?如何解决?

0 投票
1 回答
149 浏览

ios - 从 doNext 块发送错误?

我正在使用 ReactiveCocoa 和 Overcoat/Mantle/AFNetworking 来获取数据并从 RESTful API 验证用户。

这是登录视图控制器中管理登录按钮和凭据文本字段的代码:

我在单例 UserManager 类上有这个方法:

这一切都很好,使用这个信号作为按钮的 RACCommand 信号。我在登录视图控制器中处理下一个、错误和完成的事件,它工作正常。

正如您在 UserManager 代码中看到的,在 doNext 块中,如果 Keychain 方法返回一个错误,我将显示错误。我有点不确定这个错误处理是否属于这个类。

它确实有效,错误显示为 UIAlertView,但是这个 UserManager 类真的应该负责显示错误吗?

来自 rac_POST 信号的错误由登录视图控制器处理,我也想在这里处理来自 Keychain 方法的错误。是否可以从 doNext 块内向 rac_POST 信号的订阅者发送错误?我错过了一个指向订阅者的指针......同样,如果 Keychain 方法中发生错误,信号仍然会发送 next 并完成,并且就调用视图控制器所知,登录是成功的。这显然不是它应该工作的方式。

有没有其他首选的方式来处理这整个情况?我知道 doNext 块中的副作用不是首选,但在这种情况下,我看不到其他解决方案,因为我希望 UserManager 拥有此方法并能够设置自己的 currentUser。我是否应该将其包装在一个新信号中并显式发送 next、complete 和 error ?

问候,延斯

0 投票
0 回答
453 浏览

ios - 结合使用 Mantle、Overcoat 和 Magical Record 的简化核心数据堆栈

我根据这篇博客文章(Swift 中)设计了一个核心数据堆栈,其中我有两个NSManagedObjectContext实例,一个主队列上下文(NSMainQueueConcurrencyType)和一个私有队列上下文(NSPrivateQueueConcurrencyType),其中主上下文的工作是处理与用户交互相关的所有事情(编辑,向用户呈现数据)和私有上下文的唯一工作是写入磁盘。

为了使管理堆栈尽可能简单,我集成了Magical RecordOvercoatMantle。我将所有这些分为两个类,一个 Core Data 单例堆栈(基于 Magical Record 构建)和一个网络管理器单例(构建在 Overcoat 之上,而后者又构建在 Mantle 之上)。

Core Data 堆栈如下所示:

我的网络管理员看起来像:

我不能完全理解的是 1)这两个类如何协同工作,以及 2)关于核心数据堆栈、要保存的上下文、在哪个上下文上做什么等。

对于NetworkManager.swift(需要将NSManagedObjectContext模型持久化到):

我用哪个上下文来初始化管理器?我的假设是,如果您发出网络请求并且 JSON 被转换为中间Mantle模型并从那里转换为NSManagedObejct实例,那么这些实例应该直接保存到私有队列上下文,在这种情况下完全绕过主队列上下文。

谈论时CoreData.swift

1) Magical Record 具有saveWithBlock创建本地上下文并将其传播到根上下文的方法(在这种情况下,根上下文是私有队列上下文),但不清楚在块内应该做什么工作。

在他们的文档中,他们给出了这个例子:

他们Person在保存块之外创建一个对象,然后在本地上下文中重新制作实体,然后编辑它的属性。但是在我的情况下,所有Person对象都是 的实例MTLModel,而不是NSManagedObjectMTLManagedObjectAdapter当我创建一些模型对象时,因为它不是核心数据对象,所以在我用来将模型转换为NSManagedObject实例之前,它不会被插入任何类型的上下文中。

最好的方法似乎是创建MTLModel实例,进行任何需要的编辑,然后 1)在内部saveWithBlock将新创建的托管对象直接插入本地上下文并让它向上传播,或者 2)插入对象放入私有队列上下文并保存。

2)我真的需要使用主队列上下文来保存和编辑吗?正如我之前所说,Mantle 将模型类作为子类,MTLModel然后将它们映射到NSManagedObject实例中,因此我可以直接保存到 Private Queue Context(其唯一的工作就是写入磁盘)是有道理的

3)如果我不需要使用主队列上下文进行保存/编辑,它不会成为我用于获取的上下文NSManagedObjects(鉴于私有队列的工作是写入磁盘和保存/编辑功能Mantle 的中间模型结构似乎使 Main Queue Context 过时了)?

0 投票
1 回答
211 浏览

objective-c - 使用具有根键的 Mantle 解析 JSON

我尝试解析从 REST-Webservice 获得的 JSON。

座位.json:

我的 MTLModel (这不起作用。因为 json 字段前面有一个座位。)

这将起作用,因为它通过座位字典访问字段。

但是嵌套对象将不起作用。示例 JSON:

映射:

这不起作用,因为座位映射仅在字典以座位开头时才有效。

如何将 Mantle SDK 与这样的 JSON 对象一起使用?

0 投票
1 回答
104 浏览

ios - 如何在 Mantle with Overcoat 中使用子字典?

我决定使用 Mantle 来使用一些 JSON 端点,但是 JSON 的结构会根据您是GETing 还是POSTing 对象而有所不同。以用户端点为例:

请求用户时,您会收到类似于以下内容的响应:

创建用户时,您需要发送如下内容:

这不是一个很难解决的问题,但它似乎是一个足够常见的问题,Mantle应该能够为您解决它。

我知道我可以简单地用 初始化地幔模型dictionary[@"payload"],但是Overcoat会自动为我进行映射,如果我要手动进行,我将Overcoat不再利用。

所以我想知道是否有一种标准的方法可以用Mantleand/or解决这个问题Overcoat