gpt4 book ai didi

ios - 标量属性在源存储库中除外

转载 作者:搜寻专家 更新时间:2023-10-31 19:35:22 26 4
gpt4 key购买 nike

当我创建 NSManagedObjects 时,我使用了标量属性。如:

@objc(Candy)
class Candy: DefaultDeserializableManagedObject {
@NSManaged var id: Int
@NSManaged var name: String
@NSManaged var smallImageUrl: String
@NSManaged var largeImageUrl: String
@NSManaged var price: Int
@NSManaged var sortOrder: Int
}

我这样做是因为我不想通过第二个链接来获取可用的原语(例如 self.sortOrder.intValue)。一切都很好,我什至可以使用 SwiftyJSON 和 setValue:forKey: 进行反序列化,这真的很棒。

不幸的是,事情只适用于源存储库。直到帮助其他人进行设置,我才明白这一点。即使我在与工作存储库相同的机器上重新克隆并尝试设置它,也无法正常工作。尝试获取基元的值时,我得到:

2015-01-21 10:45:48.372 [5355:178924] CoreData: error: Property 'id' is a scalar type on class 'Candy' that does not match its Entity's property's scalar type. Dynamically generated accessors do not support implicit type coercion. Cannot generate a getter method for it.

2015-01-21 10:45:48.373 [5355:178924] -[Candy id]: unrecognized selector sent to instance 0x79ea3df0

我的 .gitignore 如下,我认为在这种情况下不会忽略任何特定的核心数据:

build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate

我已经尝试为工作存储库重置我的模拟器,并重新安装,但它仍然有效。 build 前的清洁工作也是如此。

最佳答案

它适用于 64 位设备,不适用于 32 位设备。

我们刚遇到这个问题,在 CoreData 模型中,属性设置为 Int64。在 Swift 中,当你有:

@NSManaged var id: Int

它尝试自动转换标量。它在 64 位设备上工作,因为它将 Int64 转换为 Int(64 位)。它在 32 位设备上失败,因为它无法将 Int64 转换为 Int(32 位)。

要么将 Int 更改为 Int64,要么将其更改为 NSNumber。

关于ios - 标量属性在源存储库中除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28071518/

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