- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试编写一种方法,该方法尝试使用变量(作为 NSXMLParser 的一部分)基于谓词检索对象。代码如下所示:
我在类中定义了这些变量:
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (strong, nonatomic) NSString *model;
@property (strong, nonatomic) NSString *element;
现在在方法中,我这样设置请求:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:self.model inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
现在的挑战 - 我希望能够做到的是:
// DOES NOT WORK
[request setPredicate:[NSPredicate predicateWithFormat:@"%@ == %@", self.element,string]];
但这不会返回任何结果。经过一番摸索之后,我注意到这确实有效:
if ( [self.element isEqualToString:@"name"] ) {
[request setPredicate:[NSPredicate predicateWithFormat:@"name == %@", string]];
}
这告诉我我的 self.element
设置正确(我认为?)但是谓词不喜欢表达式的左侧是变量。
我也试过:
[request setPredicate:[NSPredicate predicateWithFormat:@"%s == %@", [self.element UTF8String],string]];
...只是为了看看它是否更喜欢一个字符串。我也做不到。
我正在尝试的是可能的吗?我已经尽可能多地阅读了 Core Data 文档,但我找不到任何以这种方式执行的示例代码,但我也没有找到任何可以证明这是不可能的内容。
编辑:现在是工作代码:
[request setPredicate:[NSPredicate predicateWithFormat:@"%K == %@", self.element,string]];
最佳答案
如果您以前没有做过,请阅读 Predicate Programming Guide你可以找到关于谓词的一切。
现在,如果我没理解错的话,您想在两个字符串之间创建一个谓词,但第一个不是已定义的字符串,但它可以更改。
我以前没有使用过它们,但我相信您可以通过使用具有动态属性名称的谓词来解决您的问题。
这里来自文档:
Dynamic Property Names
Because string variables are surrounded by quotation marks when they are substituted into a format string using%@
, you cannot use%@
to specify a dynamic property name—as illustrated in the following example.NSString *attributeName = @"firstName";
NSString *attributeValue = @"Adam";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ like %@", attributeName, attributeValue];The predicate format string in this case evaluates to "firstName" like "Adam".
If you want to specify a dynamic property name, you use
%K
in the format string, as shown in the following fragment.predicate = [NSPredicate predicateWithFormat:@"%K like %@", attributeName, attributeValue];
The predicate format string in this case evaluates to firstName like "Adam" (note that there are no quotation marks around firstName).
更多信息也可以在这里找到:Predicate Format String Summary .
关于ios - 在核心数据谓词中使用元素名称变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9261862/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How to nest OR statements in JavaScript? 有没有办法做到这一点:
在 JavaScript 中有没有办法让一个变量总是等于一个变量?喜欢var1 = var2但是当var2更新,也是var1 . 例子 var var1 = document.getElementBy
我正在努力理解这代表什么 var1 = var2 == var3 我的猜测是这等同于: if (var2 == var3): var1 = var2 最佳答案 赋值 var1 = var2
这个问题已经有答案了: What does the PHP error message "Notice: Use of undefined constant" mean? (2 个回答) 已关闭 8
我在临时表中有几条记录,我想从每条记录中获取一个值并将其添加到一个变量中,例如 color | caption -------------------------------- re
如何将字符串转为变量(字符串变量--> $variable)? 或者用逗号分隔的变量列表然后转换为实际变量。 我有 2 个文件: 列名文件 行文件 我需要根据字符串匹配行文件中的整行,并根据列名文件命
我有一个我无法解决的基本 php 问题,我也想了解为什么! $upperValueCB = 10; $passNodeMatrixSource = 'CB'; $topValue= '$uppe
这可能吗? php $variable = $variable1 || $variable2? 如果 $variable1 为空则使用 $variable2 是否存在类似的东西? 最佳答案 PHP 5
在 Perl 5.20 中,for 循环似乎能够修改模块作用域的变量,但不能修改父作用域中的词法变量。 #!/usr/bin/env perl use strict; use warnings; ou
为什么这不起作用: var variable; variable = variable.concat(variable2); $('#lunk').append(variable) 我无法弄清楚这一点
根据我的理解,在32位机器上,指针的sizeof是32位(4字节),而在64位机器上,它是8字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大
例如: int a = 10; a += 1.5; 这运行得很完美,但是 a = a+1.5; 此作业表示类型不匹配:无法从 double 转换为 int。所以我的问题是:+= 运算符 和= 运算符
您好,我写了这个 MySQL 存储过程,但我一直收到这个语法错误 #1064 - You have an error in your SQL syntax; check the manual that
我试图在我的场景中显示特定的奖牌,这取决于你的高分是基于关卡的目标。 // Get Medal Colour if levelHighscore goalScore { sc
我必须维护相当古老的 Visual C++ 源代码的大型代码库。我发现代码如下: bIsOk = !!m_ptr->isOpen(some Parameters) bIsOk的数据类型是bool,is
我有一个从 MySQL 数据库中提取的动态产品列表。在 list 上有一个立即联系 按钮,我正在使用一个 jquery Modal 脚本,它会弹出一个表单。 我的问题是尝试将产品信息变量传递给该弹出窗
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
jQuery Core Style Guidelines建议两种不同的方法来检查变量是否已定义。 全局变量:typeof variable === "undefined" 局部变量:variable
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: “Variable” Variables in Javascript? 我想肯定有一种方法可以在 JavaScrip
在语句中使用多重赋值有什么优点或缺点吗?在简单的例子中 var1 = var2 = true; 赋值是从右到左的(我相信 C# 中的所有赋值都是如此,而且可能是 Java,尽管我没有检查后者)。但是,
我是一名优秀的程序员,十分优秀!