标签: transformable

如何让mogenerator识别Transformable属性的正确类型?

我有一个具有单个可转换属性的Core Data模型.我也有这个属性使用自定义NSValueTransformer,在模型中正确设置.

当我使用mogenerator生成/更新我的机器和人类文件时,包含该属性的实体的机器文件总是将属性键入NSObject.为了使Core Data能够使用我的自定义值转换器,此类型必须是变换器可以理解的类型.现在,我通过使用正确的类型重新定义属性,在人工文件中手动执行此操作.这样做可以让变压器工作.但是,我最终得到了几个关于重新定义属性的编译警告.

该版本中指定的最近发布的mogenerator之一指出,现在支持可转换属性.但是,我没有找到任何示例语法来启用此功能.

transformation core-data mogenerator transformable

34
推荐指数
1
解决办法
3386
查看次数

核心数据错误切换到使用“NSSecureUnarchiveFromData”或 NSSecureUnarchiveFromDataTransformer 的子类

我收到此 CoreData 错误。我不知道为什么会出现此错误。我没有使用任何 Transformable 类型。我在我的代码中没有看到任何表明我正在使用可转换属性的内容。我在创建项目时通过选择“使用核心数据”选项让 Xcode 设置核心数据。其他类似的问题无济于事,因为答案与代码有关,这些代码看起来像我在创建项目时可以找到的 Xcode 创建的任何内容。当调试窗口中出现此错误时,项目不会崩溃。我正在使用 Xcode 11.3 和适用于 iOS 12 的 iOS 版 Google Maps SDK,它在装有 iOS 13.3 的 iPhone 8 设备上运行。

CoreData: annotation:  Failed to load optimized model at path '/var/containers/Bundle/Application/A2B8A56C-E0D5-467A-9300-8EDFB20574BE/Routes.app/GoogleMaps.bundle/GMSCacheStorage.momd/StorageWithTileProto.omo'
2020-01-13 12:42:00.771883-0600 Routes[4631:1067373] [error] fault: One or more models in this application are using transformable properties with transformer names that are either unset, or set to NSKeyedUnarchiveFromDataTransformerName. Please switch to using "NSSecureUnarchiveFromData" or a subclass of NSSecureUnarchiveFromDataTransformer instead. At some point, Core Data will …
Run Code Online (Sandbox Code Playgroud)

core-data ios transformable swift

10
推荐指数
1
解决办法
3059
查看次数

核心数据可转换属性不适用于NSPredicate

我经常使用TransformableCore Data attributes,所以以后我可以改变它们.

但是,似乎,如果我想用来NSPredicate查找NSManagedObject,使用"uniqueKey == %@",或者"uniqueKey MATCHES[cd] %@"它不能正常工作.

它总是错过匹配的对象,直到我将匹配对象的uniqueKey的属性更改为具有类似的特定类NSString,或NSNumber.

有人可以解释使用的限制NSPredicateTransformable属性?

xcode core-data nspredicate ios transformable

8
推荐指数
1
解决办法
5149
查看次数

错误: - [UIImage _deleteExternalReferenceFromPermanentLocation]无法识别的选择器发送到实例

当我删除包含图像的托管对象时,在外部记录中存储为可转换的值,然后我崩溃并出现此错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImage _deleteExternalReferenceFromPermanentLocation]: unrecognized selector sent to instance 0xde49360' 
Run Code Online (Sandbox Code Playgroud)

core-data transformable ios5

7
推荐指数
1
解决办法
1875
查看次数

Swift 和 CoreData 使用自定义类作为可转换对象

我正在尝试使用带有 swift 和 CoreData 的自定义类作为可转换对象。我一直在浪费时间试图弄清楚但无法解决。我不断收到两个错误:无法将属性标记为@NSManaged,因为它的类型无法在 Objective-C 中表示,并且属性无法声明为公共,因为它的类型使用内部类型。
非常感谢您的帮助。谢谢。

我有一个名为 User 的 CoreData 对象。我还有一个名为 Site 的对象。
我不希望 Site 对象成为 CoreData 对象,因为大多数时候我创建 Site 对象时都不希望将其添加到 CoreData 上下文中。

下面您将看到“Site”类型的“primarySite”和“sites”,它是“Site”类型的数组。这两行给出了我上面列出的相同的两个错误。

数据模型 数据模型

用户+核心数据类

import Foundation
import CoreData

public class User: NSManagedObject {
}
Run Code Online (Sandbox Code Playgroud)

用户+核心数据属性

import Foundation
import CoreData

extension User {
    @nonobjc public class func fetchRequest() -> NSFetchRequest<User> {
        return NSFetchRequest<User>(entityName: "User");
    }

    @NSManaged public var firstName: String?
    @NSManaged public var lastName: String?
    @NSManaged public var role: String?
    @NSManaged public var primarySite: Site
    @NSManaged public var …
Run Code Online (Sandbox Code Playgroud)

core-data nsmanagedobject ios transformable swift

5
推荐指数
1
解决办法
1万
查看次数

UITableView"cellForRowAt:indexPath"偶尔在核心数据属性上调用"init?(coder aDecoder:NSCoder)"

我有一个核心数据实体Person,具有age类型的可转换属性Age.

final class Person: NSManagedObject {
    @NSManaged public fileprivate(set) var age: Age
}
Run Code Online (Sandbox Code Playgroud)

Age采用了NSCoding协议,有两个变量valuescale,但只有value保存:

class Age: NSObject, NSCoding {

    @objc public var value: Double
    public var scale = 1.0

    override public var description: String {
        return "\(scale * value)"
    }

    func encode(with aCoder: NSCoder) {
        aCoder.encode(value, forKey: #keyPath(value))
    }

    public convenience required init?(coder aDecoder: NSCoder) {
        self.init(value: aDecoder.decodeDouble(forKey: #keyPath(value)))
    }

    init(value: Double) {
        self.value = …
Run Code Online (Sandbox Code Playgroud)

core-data uitableview ios transformable swift

4
推荐指数
1
解决办法
183
查看次数

CoreData - 存储一组可转换对象

我有一个具有可转换属性的实体。它是一个自定义对象数组,Reminder用于确认NSSecureCoding.

@objc(Reminder)
public class Reminder: NSObject, NSSecureCoding {
    public static var supportsSecureCoding: Bool = true
    
    
    public var date: Date
    public var isOn: Bool
    
    public  init(date: Date, isOn: Bool) {
        self.date = date
        self.isOn = isOn
    }
    
    struct Keys {
        static var date: String = "date"
        static let isOn: String = "isOn"
    }
    
    public func encode(with aCoder: NSCoder) {
        aCoder.encode(date as NSDate,forKey: Keys.date)
        aCoder.encode(isOn,forKey: Keys.isOn)
    }
    
    required public init?(coder aDecoder: NSCoder) {
        guard let date = aDecoder.decodeObject(of: …
Run Code Online (Sandbox Code Playgroud)

core-data ios transformable swift

4
推荐指数
1
解决办法
548
查看次数

Transformable 上的 CoreData NSPredicate 会导致 EXC_BAD_ACCESS

Transformable使用 Core Data 搜索a 中是否存在数组元素的正确方法是什么NSPredicate

我有一个Entity可操作Attribute的天数,其中Type的一个Transformable是给定的Custom Class [Int]在此输入图像描述 我用它来存储整数数组。它可以存储,但当我EXC_BAD_ACCESS尝试使用 NSPredicate 获取它们时,我得到了

我知道

运营天数为 {1,2,3,4}

我正在尝试,但它们都因错误而失败。

//day is an Int (1) in this case

NSPredicate(format: "%d IN operationalDays",day) 
NSPredicate(format: "%i IN operationalDays",day) 
NSPredicate(format: "%@ IN operationalDays",day) 
NSPredicate(format: "operationalDays CONTAINS %d",day) 
NSPredicate(format: "operationalDays CONTAINS %i",day)
NSPredicate(format: "operationalDays CONTAINS %@",day)
Run Code Online (Sandbox Code Playgroud)

当我在崩溃后检查谓词时,我得到

谓词:(1 IN runningDays);

或者

谓词:(操作天数包含 1)

core-data nspredicate ios transformable swift

1
推荐指数
1
解决办法
988
查看次数