zoukankan      html  css  js  c++  java
  • Predicate Format String Syntax 与字面量

    字面量:

    字符串:单引号或双引号扩起来;

    %@:系统自动添加,数字则自动去除@();

    无单双引号,系统做数字处理。

    Single or double quoting variables (or substitution variable strings) cause %@%K, or $variable to be interpreted as a literal in the format string and so prevent any substitution.

    系统自动添加   double quoting

     NSPredicate *predicate   = [NSPredicate predicateWithFormat:@"%K = %@", @"a", @"ddd"];

        NSPredicate *predicatex   = [NSPredicate predicateWithFormat:@"eee = %@", @"ddd"];

        NSPredicate *predicateh   = [NSPredicate predicateWithFormat:@"h = 'hhh'"];

        NSPredicate *predicatee   = [NSPredicate predicateWithFormat:@"%K = %@",@"c", @(7)];

        NSPredicate *predicatep   = [NSPredicate predicateWithFormat:@"%K = %d",@"e", 7];

        NSLog(@" %@ %@ %@ %@ %@",predicate,predicatex,predicateh,predicatee,predicatep);

    a == "ddd"

    eee == "ddd"

    h == "hhh"

    c == 7

    e == 7

    NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"appId == '%@'", [FQAccountManager sharedFQAccountManager].appId]];

    属于二次转化。

    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html#//apple_ref/doc/uid/TP40001795-SW1

    Parser Basics

    The predicate string parser is whitespace insensitive, case insensitive with respect to keywords, and supports nested parenthetical expressions. The parser does not perform semantic type checking. 

    Variables are denoted with a dollar-sign ($) character (for example, $VARIABLE_NAME). The question mark (?) character is not a valid parser token. 

    The format string supports printf-style format specifiers such as %x (see Formatting String Objects). Two important format specifiers are %@ and %K.

    • %@ is a var arg substitution for an object value—often a string, number, or date.

    • %K is a var arg substitution for a key path.

    When string variables are substituted into a string using the %@ format specifier, they are surrounded by quotation marks. If you want to specify a dynamic property name, use %K in the format string, as shown in the following example.

    NSString *attributeName  = @"firstName";
    NSString *attributeValue = @"Adam";
    NSPredicate *predicate   = [NSPredicate predicateWithFormat:@"%K like %@",
            attributeName, attributeValue];

    The predicate format string in this case evaluates to firstName like "Adam"

    Single or double quoting variables (or substitution variable strings) cause %@%K, or $variable to be interpreted as a literal in the format string and so prevent any substitution. In the following example, the predicate format string evaluates to firstName like "%@" (note the single quotes around %@).

    NSString *attributeName = @"firstName";
    NSString *attributeValue = @"Adam";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like '%@'",
            attributeName, attributeValue];
  • 相关阅读:
    剑指Offer_#7_重建二叉树
    剑指Offer_#6_从尾到头打印链表
    剑指Offer_#5_替换空格
    剑指Offer_#4_二维数组中的查找
    Redis详解(十三)- Redis布隆过滤器
    Redis详解(十二)- 缓存穿透、缓存击穿、缓存雪崩
    Redis详解(十一)- 过期删除策略和内存淘汰策略
    Redis详解(十)- 集群模式详解
    Redis详解(九)- 哨兵(Sentinel)模式详解
    Redis详解(八)- 主从复制
  • 原文地址:https://www.cnblogs.com/feng9exe/p/7091143.html
Copyright © 2011-2022 走看看