gpt4 book ai didi

swift - 瞬时可选 NSSet 因 EXC_BAD_ACCESS 错误而崩溃

转载 作者:行者123 更新时间:2023-11-30 12:03:08 24 4
gpt4 key购买 nike

我在 Swift 中有一个临时可选属性 addedImages,作为托管对象中与该属性和访问器方法的一对多关系的一部分:


@NSManaged public var addedImages: NSSet?

@objc(addAddedImagesObject:)
@NSManaged public func addToAddedImages(_ value: MMImage)

@objc(removeAddedImagesObject:)
@NSManaged public func removeFromAddedImages(_ value: MMImage)

@objc(addAddedImages:)
@NSManaged public func addToAddedImages(_ values: NSSet)

@objc(removeAddedImages:)
@NSManaged public func removeFromAddedImages(_ values: NSSet)

失败的代码在串行队列中运行,并因 EXC_BAD_ACCESS 错误而崩溃。

let backgroundContext = NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.privateQueueConcurrencyType)
backgroundContext.performAndWait {
print("\(self.addedImages?.count ?? 0) added images")
self.addToAddedImages(image)
}

当我将addedImages定义为非 transient 时,它可以正常工作。我不确定这是否是正常行为,以及如何解决此问题。感谢您的帮助。

最佳答案

我假设 transient 属性在创建和获取期间将被初始化为 nil ,这是错误的。当我尝试访问 count 时,该对象根本不在内存中。我必须将其添加到 awakeFromFetchawakeFromInsert,这有效。

if self.addedImages == nil {
self.addedImages = nil
}

关于swift - 瞬时可选 NSSet 因 EXC_BAD_ACCESS 错误而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46983257/

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