【问题标题】:Unacceptable type of value for attribute, but the type is ok属性值的类型不可接受,但类型正常
【发布时间】:2013-04-22 16:20:25
【问题描述】:

我正在使用 Core Data 编写一个应用程序,该属性在一个实体中:
@property (nonatomic, retain) NSString * mesa;

我在传递 JSON 处理字典中的值时遇到问题:
local.mesa =[locales [0] valueForKey:@"mesa"];

我收到此错误:
'NSInvalidArgumentException',原因:'不可接受的属性值类型:property = "mesa";所需类型 = NSNumber;给定类型 = __NSCFString;价值 = 沙龙 2。'

这向我表明所需的类型是 NSNumber,但该属性在 xcdatamodel 和类中声明为 NSString。

有可能是属性的第一个声明是NSNumber,他好像没变。

有什么想法吗?

【问题讨论】:

  • 确保它是模型中的NSString,然后重新生成NSManagedObject文件。你不应该直接操作核心数据生成的 NSmanagedObject 文件
  • 另外,如果您更改了模型中某个项目的数据类型,您应该在再次运行之前清理构建并删除所有现有的数据库文件。
  • 谢谢,但是如何重新生成 NSManagedObject 文件呢?我已经清理并构建了产品,但我没有删除任何数据库
  • 我解决了这个问题,从模拟器中卸载应用程序,然后按照这个线程:stackoverflow.com/questions/12617585/… 重新创建正确的数据模型层次结构。谢谢大家
  • 如果应用在应用商店中怎么办?用户只会更新应用程序而不是删除它。这种情况如何解决?

标签: objective-c xcode core-data


【解决方案1】:

如果架构之前在模拟器中有一个 nsnumber,请从模拟器中删除您的应用程序,以便使用该变量中的 nsstring 创建一个新的核心数据库。

【讨论】:

    【解决方案2】:

    我忘记关闭了,抱歉。 就像我之前说的:

    我从模拟器中卸载应用程序解决了这个问题,然后按照这个线程:Cannot create an NSPersistentStoreCoordinator with a nil model after deleting app from device 重新创建正确的数据模型层次结构。 再次感谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      相关资源
      最近更新 更多