gpt4 book ai didi

ios - 核心数据 NSFetchrequest 整数

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

我有以下场景。我有一个使用核心数据处理数据的应用程序。我有一个名为“Brothers”的实体,它具有 3 个属性:姓名、状态、年龄。

假设我的数据库中有 1 条记录:

-Name   ==> Joe (String)
-Status ==> Married (String)
-Age ==> 28 (Integer)

我有一个 UIlabel、一个 UItextfield 和一个 Button。我希望能够在 UItextfield 上键入姓名(在本例中为 Joe),按下按钮并在 UILabel 中显示年龄(在本例中为 28)。我还想将年龄值存储到变量类型整数中,以便稍后可以用它进行一些计算。

在按钮内的代码下方。

NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"Brothers" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc]init];
[request setEntity:entitydesc];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age %d", [self.age.text integerValue]];
[request setPredicate:predicate];

NSError *error;
NSArray *integer = [context executeFetchRequest:request error:&error];

self.displayLabel.text = integer;

更新#1

我更新了按钮内的代码,现在我可以按姓名搜索并显示年龄。我仍在考虑将年龄作为整数存储到变量中,以便稍后使用。

NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"Brothers" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc]init];
[request setEntity:entitydesc];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstname like %@", self.firstnameTextField.text];
[request setPredicate:predicate];

NSError *error;
NSArray *integer = [context executeFetchRequest:request error:&error];

if(integer.count <= 0){
self.displayLabel.text = @"No records found";

}

else {

NSString *age;

for (NSManagedObject *object in integer) {

age = [object valueForKey:@"age"];

}
self.displayLabel.text = [NSString stringWithFormat:@"age: %@",age];
}

}

最佳答案

谓词是一个表达式。如果表达式的计算结果为真,则谓词得到满足。因此,如果您按年龄搜索,您会使用例如

[NSPredicate predicateWithFormat:@"age = %d", [self.age.text integerValue]]

或按名称:

[NSPredicate predicateWithFormat:@"name = %@", someNameOrOther]

或者两者兼而有之:

[NSPredicate predicateWithFormat:@"(name = %@) and (age = %d)", someNameOrOther, [self.age.text integerValue]]

获取请求获取实际的 NSManagedObject。所以你会得到一个 Brother 的数组。因此你可能想要更像这样的东西来输出一个名字:

if([array count])
self.displayLabel.text = [array[0] name];

或者对于一个年龄段:

...
self.displayLabel.text = [[array[0] age] stringValue];

或者您要输出的任何其他属性。

关于ios - 核心数据 NSFetchrequest 整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18599508/

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