gpt4 book ai didi

objective-c - 无法将类型 '(Array<_>).Type' 的值分配给 [CustomClass]

转载 作者:行者123 更新时间:2023-11-28 14:25:42 25 4
gpt4 key购买 nike

我正在开发一个同时使用 Objective-C(旧代码)和 Swift(新代码和 future 添加的任何代码)的项目

我在 CoreData 模型中创建了两个新实体,我们称它们为文件夹和文件。 Folder 与 File 是一对多的关系。

这是我到目前为止提到的自动生成子类的代码:

@interface Folder (CoreDataProperties)

+ (NSFetchRequest<Folder *> *)fetchRequest;
....
@property (nullable, nonatomic, retain) NSSet<File *> *files;
....
@end

@interface File (CoreDataProperties)

+ (NSFetchRequest<File *> *)fetchRequest;
....
@property (nullable, nonatomic, retain) Folder *folder;
....
@end

我正在处理我的 Swift 文件中的文件夹记录,我只是想设置我在另一个页面上具有 Folder.files 关系的属性。

这是我要设置的另一个 (Swift) 页面上的属性:

class FilesTableViewCell: UITableViewCell {

...
var filesArray: [File]? = []
...
}

所以我试图将特定文件夹记录的文件设置为该属性:

//some other Swift file
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
...
let cell = tableView.dequeueReusableCell(withIdentifier: FilesTableViewCellIdentifier) as! FilesTableViewCell
let currentFolder = folderArray.last
cell.filesArray = currentFolder?.files
// the line does not work I get a "Cannot assign value of type 'Set<File>?' to type '[File]?'" error
return cell
....

即使我将“(Array)”添加到“currentFolder?.files”的前面,我仍然会收到以下错误:

"Cannot assign value of type '(Array<_>).Type' to type '[File]?'"

我在 Swift 方面经验不足,所以任何人都可以帮助我理解为什么这不起作用以及潜在的解决方案吗? (在这一点上,我将不得不为所有该文件夹的文件执行核心数据提取,但如果不需要的话,我宁愿不要那么低效)

最佳答案

请注意 files不是 Array相反,它是一个 Set . Set 与 array 的不同之处在于它没有顺序,因此当您遍历 Set 时顺序可以(将)每次都不同。 Set但是要确保一个对象只能添加一次,所以如果您添加两个与 Set 相同的对象它将只包含一个对象 - 因此没有重复项。

获得 Array来自 Set你只要做Array(yourSet)如果 yourSet 的类型是 Set<File>数组的类型为 [File]

您只需将代码更改为:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
...
let cell = tableView.dequeueReusableCell(withIdentifier: FilesTableViewCellIdentifier) as! FilesTableViewCell

if let currentFolder = folderArray.last, let files = currentFolder.files {
let filesArray = Array(files)
cell.filesArray = filesArray
}

return cell
....
}

关于objective-c - 无法将类型 '(Array<_>).Type' 的值分配给 [CustomClass],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51600778/

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