xcode 无法将类型的值分配给 NSSet
Posted
技术标签:
【中文标题】xcode 无法将类型的值分配给 NSSet【英文标题】:xcode cannot assign value of type.. to NSSet 【发布时间】:2017-10-25 01:53:57 【问题描述】:我正在使用 Swift 3 开发 CoreData,我几乎完成了。我做了 CoreData 实体,现在我试图从应用程序的表单中保存数据,但我收到了这个错误:
import UIKit
import CoreData
class ItemDetailsVC: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource
@IBOutlet weak var storePicker: UIPickerView!
@IBOutlet weak var titleField: CustomTextField!
@IBOutlet weak var priceField: CustomTextField!
@IBOutlet weak var detailsField: CustomTextField!
var stores = [Store]()
override func viewDidLoad()
super.viewDidLoad()
storePicker.delegate = self
storePicker.dataSource = self
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
let store = stores[row]
return store.name
func numberOfComponents(in pickerView: UIPickerView) -> Int
return 1
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
return stores.count
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
// update
func getStores()
let fetchRequest: NSFetchRequest<Store> = Store.fetchRequest()
do
self.stores = try context.fetch(fetchRequest)
self.storePicker.reloadAllComponents()
catch
// some code
@IBAction func savePressed(_ sender: UIButton)
let item = Item(context: context)
if let title = titleField.text
item.title = title
if let price = priceField.text
item.price = (price as NSString).doubleValue
if let details = detailsField.text
item.details = details
item.toStore = stores[storePicker.selectedRow(inComponent: 0)] error: cannot assign value of type 'Store' to value of type NSSet?
我不是要求任何人解决错误,我只是想知道错误告诉我要做什么。错误出现在 item.toStore = stores[storePicker... 行
【问题讨论】:
不知道为什么不显示图片 请将源代码作为文本和错误添加到问题中。确保包含您正在使用的与错误相关的所有自定义类型。 将您的代码发布为文本而不是图像。这样人们就可以更轻松地测试您的代码。 对不起,我是 *** 的新手,所以看起来有点乱 【参考方案1】:当您将 CoreData 模型上的关系设置为 To Many 时,它开始表现得像一个数组。就像这样,您需要将数据附加到该数组而不是为其分配一个类。你可以这样做:
.addingObjects(from: [Any])
【讨论】:
【参考方案2】:我不是要求任何人解决这个错误,我只是想知道是什么 错误告诉我要这样做。
据我了解,toStore
是 CoreData 中从Item
到Store
实体的to many
关系。
现在,既然您只需要知道错误,如果我是正确的并且关系正好在上面,那么这意味着 Item
实体有一个 set
与之关联的商店而不是一个 Store
,因此你得到这个错误
错误:无法将“Store”类型的值赋给 NSSet 类型的值?
【讨论】:
【参考方案3】:问题是您的实体具有一对多的关系,如果您想解决此问题,请尝试将其更改为“一对多”。我知道您不想要答案,但这里是有关如何解决此问题的提示。如果您转到 *.xcdatamodeld 文件并找到您的 Item 实体,您可以看到属性关系...找到合适的关系并将其从“to-many”修改为“to-one”
【讨论】:
以上是关于xcode 无法将类型的值分配给 NSSet的主要内容,如果未能解决你的问题,请参考以下文章
无法将类型“[PHAsset]”的值分配给类型“UIImageView!”