• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - NSPredicate 通过选择带有 Beginswith 的键来获取 NSDictionary 的值

[复制链接]
菜鸟教程小白 发表于 2022-12-12 18:49:01 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我必须管理这个丑陋的 xml 结构。 如何查询所有以/包含“Key”开头的 Key-Tag?

Xml-结构:

<Data>
    <Rec>
       <Key1>0001</Key1>
       <Key2>0015</Key2>
       <Key3>0002</Key3>
       <Key4>0022</Key4>
       ...              
    </Rec>
    <Rec>
       <Key1>0015</Key1>
       <Key2>0022</Key2>
       <Key3>0002</Key3>
       <Key4>0001</Key4>
       ...              
    </Rec>
    ...
</Data>

Rec-Object-Structure:

@interface Rec : NSObject
@property (nonatomic, copy) NSMutableDictionary *content;
@end

这是我在 Key1 上选择的代码:

predicateRecs = [NSPredicate predicateWithFormat"content.%K == %@", @"Key1", @"0001"];

[result addObjectsFromArray:[recs filteredArrayUsingPredicate: predicateRecs]];

recs 是一种 NSArray 类型,包含 Rec - 对象。 %K 需要能够执行以下操作: content.@allKeys BEGINSWITH %@ == %@ ,@"Key", @"0001"`

我想获取所有带有值的键,例如0001 我该怎么做?

谢谢



Best Answer-推荐答案


我会根据您的评论使用子查询:

predicateRecs = [NSPredicate predicateWithFormat"SUBQUERY(FUNCTION(SELF, 'allKeys'), $k, SELF[$k] beginswith[cd] %@ AND SELF[$k] == %@).@count > 0", @"Key",@"0001"];

Dave DeLong 是谓词大师: http://www.mactech.com/sites/default/files/Dave_DeLong-Power_Of_Predicates.pdf

当然还有: https://stackoverflow.com/a/5570510/312312

关于ios - NSPredicate 通过选择带有 Beginswith 的键来获取 NSDictionary 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21766548/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap