我对某些代码有疑问。我有一个称为附件的功能。它调用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()]
}
}
答案 0 :(得分:0)
以下是您的错误,如果获取未返回任何内容,则会返回一个新的Data
对象
if data1.count == 0 {
return [Data()]
}
您当然想写
if data1.count == 0 {
return [Data]()
}
还有一些问题
或者您可以删除所有这些内容,因为data1
已正确初始化,因此您可以以任何一种方式返回它,以便可以将for {}
循环之后的代码简化为
return data1
} catch {
print(error)
}
}