gpt4 book ai didi

swift - 如果 swift Coredata 函数为空则隐藏按钮

转载 作者:行者123 更新时间:2023-11-30 10:42:56 24 4
gpt4 key购买 nike

我的某些代码有问题。我有一个称为附件的功能。它调用DatabaseManager 的特定函数getttachmentdata。这会调用 coredata 来查看用户是否上传了图像并调用它。如果有的话,我还有代码的另一部分,用户单击按钮并显示该图像。

问题是,当数据为空或没有上传任何内容时,我希望禁用该按钮。这可能是一个简单的修复,但实际上我不太确定。

    let attachments = DataBaseManager().getAttachmentData()
if attachments.isEmpty {
btnProofOfDelivery.isHidden = true
btnProofOfDelivery.isEnabled = false
}

我编写了上面的代码,但是,当我尝试运行我的程序时,它仍然显示我想要消失的按钮。不使用 if 语句运行会使按钮消失。

获取附件的代码

func getAttachmentData()-> Array<Data>{
var data1 = [Data]()
let context = CoreData.sharedCoreData.managedObjectContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Attachments")

do {
let result = try context.fetch(request)
print(result)
for data in result as! [NSManagedObject] {
print(data.value(forKey: "attachment") as! Data)
data1.append(data.value(forKey: "attachment") as! Data)
}
if data1.count == 0 {
return [Data()]
}else{
return data1
}
} catch {
return [Data()]
}
}

最佳答案

下面是您的错误,如果提取没有返回任何内容,您将返回一个新的Data对象

if data1.count == 0 {
return [Data()]
}

你当然想写

if data1.count == 0 {
return [Data]()
}

以及 catch 中的一些问题

或者您可以删除所有这些,因为 data1 已正确初始化,因此您可以以任何一种方式返回它,这样 for {} 循环之后的代码就可以是减少到

        return data1
} catch {
print(error)
}
}

关于swift - 如果 swift Coredata 函数为空则隐藏按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56408785/

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