问题标签 [transformable]
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.
ios - iOS 核心数据可转换
我对 iOS CoreData 实现比较陌生。这是我的问题:
我有一个实体,它有一个“资产”字段,可能包含一种或多种不同类型的对象。它在另一个的子对象中。存储它的最佳方法是什么以及如何检索它。
我的伪代码示例:
在 Person.asset 中,它可以是一个或几个不同类对象的组合:
我目前的储蓄方法是创建个人类型的资产并添加到个人;
在我保存上下文之前,以下似乎有效,我可以通过以下方式访问 Person 对象:
直到我保存上下文并重新加载应用程序。在加载应用程序时,我获取 Group 对象,然后尝试执行上面相同的代码。它似乎指向正确的人员对象,但在 person.type 行上失败,我最终得到一个错误:[error] error: exception handling request: , -[Asset initWithCoder:]: unrecognized selector sent to instance 0x60c00027e040用户信息为(空)
我相信我在保存和获取时可能需要对资产字段进行某种编码?即使我试图访问该人的 type 属性,错误仍是在引用资产。提前感谢您的帮助。
ios - 核心数据-[Decodable.Address initWithCoder:]:发送到实例的无法识别的选择器
我已经使用 swift Codable实现了 JSON 解析并将其存储在Coredata中。我的代码在存储 JSON 和获取没有“可转换”属性的实体时工作正常。但是如果它的任何属性是可转换的,那么获取实体会失败并崩溃并显示以下日志。如果是自定义对象,我需要保留可转换属性。看看下面的核心数据模型类并为我的实现获取请求。控制台日志:
ViewController.swift
诊所+CoreDataClass.swift
诊所+CoreDataProperties.swift
地址+CoreDataClass.swift
地址+CoreDataProperties.swift
我尝试在 Clinic+CoreDataClass.swift 中实现 initWithCoder: 但它给出错误 - 无法调用 initWith(entity: insertInto:)。我需要实现 initwith(entity: insertinto:)
ios - UITableView "cellForRowAt: indexPath" 偶尔调用 Core Data 属性上的 "init?(coder aDecoder: NSCoder)"
我有一个核心数据实体,其类型Person
为可转换属性。age
Age
Age
采用NSCoding
协议,有两个变量value
和scale
,但只value
保存了 :
我在一个 中显示age
一个实例Person
的UITableViewCell
。此实例 ( person
) 的年龄值为 10.0,即person.age.value = 10.0
,因此当以编程方式将比例更改为scale = 2.0
通过 aUIStepper
时,UITableViewCell
显示20.0
(即scale * value
)。
但是,我发现如果我增加了足够多的次数,最终会在方法期间调用的类UIStepper
的初始化,该方法返回给定的实例。这显然会导致类中的方法被调用,从而将属性的值重置为 1。Age
Person
tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
Person
IndexPath
init?(coder aDecoder: NSCoder)
Age
scale
请问为什么会发生这种情况,有没有办法解决这个问题?理想情况下,我希望该scale
属性的值始终保持在UIStepper
.
感谢您对此事的任何帮助。
编辑
通过以下方式获得给定person
的 at an :indexPath
ios - CoreData 可转换:自定义转换器永远不会被调用 - 使用 NSKeyedArchiver
我创建了一个简单的 CoreData 模型,其中包含一个具有自定义可转换属性的实体:
然后,在 AppDelegate 中,我尝试获取并保存单个实体:
我第一次运行应用程序时得到nil
,而第二次得到Optional("String attribute")
,这似乎转换工作正常。
但是,这是我的变压器类:
似乎 CoreData 使用NSKeyedArchiver/Unarchiver
而不是我的自定义类。可能是什么问题呢?
显然,这是我设置的一个测试项目,目的是弄清楚可转换属性是如何工作的,并测试我正在处理的真实项目中面临的一个更大的问题。
swift - Set的安全编码
我的应用程序使用存储自定义类实例的核心数据CustomClass
。
此类具有许多属性,其中大多数是标准类型,但一个属性是xxx: Set<CustomObject>
.
因此xcdatamodeld
指定(在其他标准类型xxx
中) type的属性Transformable
。xxx
是Set<CustomObject>
。它的类型是Optional
,Transformer 现在是NSSecureUnarchiveFromData
。
之前没有指定 Transformer,因此解码不安全。但 Apple 现在建议使用安全编码,因为将来不推荐使用不安全编码。
为了启用安全编码,我做了以下事情:
CustomClass
现在采用NSSecureCoding
而不是NSCoding
.
以下内容var
已添加到CustomClass
:
然后我尝试修改public required convenience init?(coder aDecoder: NSCoder) {…}
,以便xxx
安全地解码该属性。我知道,而不是
我必须使用 now decodeObject(of:forKey:)
,of
要解码的对象的类型在哪里,这里是 type Set<CustomObject>
。
我的问题是我不知道如何制定这个:如果我使用
我得到错误Cannot convert value of type 'Set<CustomObject>.Type' to expected argument type '[AnyClass]?' (aka 'Optional<Array<AnyObject.Type>>‘)
。
显然编译器没有编译
但反而
即它Set<CustomObject>
不被视为单一类型,而是作为类型的集合。
那么,我如何指定只应解码一种类型,即Set<CustomObject>
?
ios - 核心数据错误切换到使用“NSSecureUnarchiveFromData”或 NSSecureUnarchiveFromDataTransformer 的子类
我收到此 CoreData 错误。我不知道为什么会收到此错误。我没有使用任何可转换类型。我在我的代码中看不到任何东西表明我正在使用可转换的属性。在创建项目时,我通过选择 Use Core Data 选项让 Xcode 设置 CoreData。其他类似的问题没有帮助,因为答案与我能找到的任何在创建项目时创建的 Xcode 的代码有关。当此错误出现在调试窗口中时,项目不会崩溃。我正在使用 Xcode 11.3 和适用于 iOS 12 的 Google Maps SDK,它在装有 iOS 13.3 的 iPhone 8 设备上运行。
这是触发错误的代码:
我正在使用以下核心数据对象:
地址实体
位置属性
输入整数 16
文本属性类型字符串
时间戳属性类型日期
路由关系destination 路由反向地址
路由实体
时间戳属性类型日期
标题属性类型字符串
地址 关系 目的地 地址 反向 路由
我有以下托管对象类的代码:
ios - 如何存储 [[string]] 并从核心数据中获取它?
我有这样的 [[string]] 示例数组 [["A", "B", "C"], ["A"], ["B", "C"], ["C"], [ "B"], ["B", "C", "A"]]
我将它存储到这样的核心数据中:
哪个角色是 API 的数组结果(在追加循环之后)var roless = [[String]]()
核心数据存储在列表中var coreHeroList: [NSManagedObject] = []
但是当我尝试从核心数据中获取并存储它(在removeall之后)时:
它给出红色错误:无法将类型“[[String]]”的值转换为预期的参数类型“[String]”
我将核心数据设置为手动并已设置 NSManagedObject SubClass
如何从核心数据中获取 [[string]]?我对核心数据的插入是否错误?
graphics - (D)SFML自动更新形状位置
我在 D 中创建了一个简单的小程序,其中包含对 SFML 的 D 绑定。我目前正在阅读有关自定义转换和自定义形状的信息。
现在我创建了一个类
这是 D 代码,但我认为除 之外的大部分内容mixin
在 C++ 中应该完全相同。
现在我的问题主要是关于方法body.position = this.position;
中的这一行draw
。
是否需要手动更新形状的位置?这似乎有点错误,但我没有找到任何资源来告诉我如何自动化这个过程。这样做draw
对我来说也有点像致命的罪过。
所以基本上我的问题是:
如何根据可转换接口中的方法发生的事情来绘制自己的可绘制对象。
或者更简单:
如何自动同步对象和形状的位置、比例、旋转等?