在核心数据中,我有一个名为“CachedRecipes”的实体,其中包含一个名为“jsonData”的属性。
我有一个从此属性中获取JSON数据的函数
func getJSONFromCoreData()->AnyObject {
var jsonDataInCoreData:AnyObject = ""
do
{
let fetchRequest = NSFetchRequest(entityName: "CachedRecipes")
let fetchedResults = try self.sharedContext.executeFetchRequest(fetchRequest)
for (var i=0; i < fetchedResults.count; i++)
{
let single_result = fetchedResults[i]
let out = single_result.valueForKey("jsonData")
print(out)
jsonDataInCoreData = out!
}
}
catch
{
print("error")
}
return jsonDataInCoreData
}
我在同一个UIViewController的viewDidLoad中使用一个语句来获取这样的数据:
let jsonDataFromCoreData = self.getJSONFromCoreData()
如何检查jsonDataFromCoreData
是否为空或者没有任何名为jsonData
的密钥且该密钥没有任何值?如果发生错误,我需要打印出错误。
答案 0 :(得分:1)
更改您的功能,使其返回可选
func getJSONFromCoreData()->AnyObject? {
var jsonDataInCoreData:AnyObject?
do
{
let fetchRequest = NSFetchRequest(entityName: "CachedRecipes")
let fetchedResults = try self.sharedContext.executeFetchRequest(fetchRequest)
for (var i=0; i < fetchedResults.count; i++)
{
let single_result = fetchedResults[i]
let out = single_result.valueForKey("jsonData")
print(out)
jsonDataInCoreData = out!
}
}
catch
{
print("error")
}
return jsonDataInCoreData
}
如果它返回nil
,则它不包含该数据。你可以像这样展开:
if let json = getJSONFromCoreData() {
// Has some data
} else {
// No data
}