【问题标题】:Error: -[UIImage _deleteExternalReferenceFromPermanentLocation] unrecognized selector sent to instance错误:-[UIImage _deleteExternalReferenceFromPermanentLocation] 无法识别的选择器发送到实例
【发布时间】:2011-12-17 08:13:06
【问题描述】:

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

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImage _deleteExternalReferenceFromPermanentLocation]: unrecognized selector sent to instance 0xde49360' 

【问题讨论】:

    标签: core-data ios5 transformable


    【解决方案1】:

    我在Apple Developer forums 中回答了类似的问题。
    我猜您在数据建模器的该字段上选中了外部存储复选框。

    有一个可以解决的错误。我是这样做的:
    更新数据并保存上下文后,任何删除它的尝试都会引发此“无法识别的选择器”异常。
    要强制使用可以响应 _deleteExternalReferenceFromPermanentLocation 消息的正确对象,请执行以下操作:

    [[self managedObjectContext] refreshObject:myobject mergeChanges:NO];
    

    对象变成故障。当您下次访问或删除它时,外部数据将按预期删除,因为将从存储中提取包装外部数据的正确对象,并将正确响应 _deleteExternalReferenceFromPermanentLocation。

    【讨论】:

    • 这也是“二进制数据”核心数据类型的问题(选中“允许外部存储”),还是只有“可转换”的问题?
    【解决方案2】:

    表示UIImage没有响应:

    _deleteExternalReferenceFromPermanentLocation
    

    …选择器,这意味着 UIImage 没有实现该特定方法。这似乎是 Core Data 用来在外部文件中存储大量数据的私有方法之一。这是 iOS 5 才有的功能。

    在这种情况下,最可能的原因有两个:

    (1) 您将 UIImage 对象与托管对象混淆了,反之亦然,以至于将用于一个类的消息发送到另一个类(这是此类错误的最常见原因。)

    (2) 您试图在模拟器或设备中运行为早期 iOS 下的 iOS 5 编译的代码。

    【讨论】:

    • 我有可转换的属性,我通过 NSValueTransformer 存储 UIImage ...据我了解,我需要将此属性更改为 NSData 以避免出现此错误消息
    【解决方案3】:

    我也遇到了这个问题,NSDate 核心数据属性。我不需要将它存储在外部,但找不到任何要取消设置的复选框(Xcode 4.2)。然而,当我acked 时,它显然就在那里:

    > ack -aiQ external Collections.xcdatamodeld
    Collections.xcdatamodeld/Collections.xcdatamodel/contents
    12:        <attribute name="createdAt" attributeType="Date" allowsExternalBinaryDataStorage="YES" indexed="YES" syncable="YES"/>
    

    所以我只是删除并重新创建了具有相同名称的属性。 allowsExternalBinaryDataStorage XML 属性消失了,我的崩溃也消失了。我一定是在 iOS 5 的 beta 版本中无意中检查了一些东西,然后它就卡在了数据模型中,静静地等待,直到我试图删除一个对象。

    无论如何,这可能会帮助其他遇到看似 iOS 错误但不需要将相关属性存储在外部的人。

    【讨论】:

      猜你喜欢
      • 2014-03-24
      • 2019-04-13
      • 2012-04-04
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多