gpt4 book ai didi

Swift Fetch 请求在结果中返回空项

转载 作者:IT王子 更新时间:2023-10-29 05:53:41 26 4
gpt4 key购买 nike

我有一个项目,我需要执行获取请求以获取核心数据实体的最新“更新”日期。然而,当我实际检查查询返回的结果时,我看到了一些相当奇怪的行为。除了包含日期的“正确”结果外,结果还包括一个空字典项。无论底层数据是什么样子,这种情况每次都会发生。更奇怪的是,如果我在 xcode 中打开 sql 日志记录并对 sqllite 数据库执行记录的查询,它会产生正确的结果,没有额外的条目。我不太确定我在这里做错了什么,我们将不胜感激。

构建和执行查询的函数:

func queryForContactDate(context:NSManagedObjectContext) -> AnyObject?
{

var expressionDescriptions = [AnyObject]();

let expressionDescription = NSExpressionDescription()

// Name the column
expressionDescription.name = "maxUpdated"
// Use an expression to specify what aggregate action we want to take and
// on which column. In this case max on the update_at column
expressionDescription.expression = NSExpression(format: "@max.updated_at")
// Specify the return type we expect
expressionDescription.expressionResultType = .DateAttributeType
// Append the description to our array
expressionDescriptions.append(expressionDescription)

// Build out our fetch request the usual way
let request = NSFetchRequest(entityName: Contact.entityName())

// Specify we want dictionaries to be returned
request.resultType = .DictionaryResultType

// Hand off our expression descriptions to the propertiesToFetch field.
request.propertiesToFetch = expressionDescriptions

// Our result is going to be an array of dictionaries.
var results:[[String:AnyObject]]?

// Perform the fetch. This is using Swfit 2, so we need a do/try/catch
do {
results = try context.executeFetchRequest(request) as? [[String:AnyObject]]
} catch _ {
// If it fails, ensure the array is nil
results = nil
}

return results![0];
}

如果我在末尾放置一个断点并打印出它产生的结果:

Printing description of results:
▿ Optional([[:], ["maxUpdated": 2015-12-30 20:05:31 +0000]])
▿ Some : 2 elements
- [0] : 0 elements
▿ [1] : 1 elements
▿ [0] : 2 elements
- .0 : "maxUpdated"
- .1 : 2015-12-30 20:05:31 +0000

最佳答案

获取最大或最小项的传统 Core Data 方法是使用 1 的获取限制进行查询并根据该键进行排序。就像在这个 Objective-C 代码中一样:

+ (NSFetchRequest *) requestForStatusWithMaxID {

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName: kAMStatusEntity];

NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey: kAMTwID ascending:NO];

request.sortDescriptors = @[sd];
request.fetchLimit = 1;

return request;

} // +requestForStatusWithMaxID

为您的 updated_at 属性修改以上内容将非常简单。

关于Swift Fetch 请求在结果中返回空项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620174/

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