`
thierry.xing
  • 浏览: 665183 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
580fa9c1-4a0c-3f40-a55a-c9256ce73302
Sencha Touch中...
浏览量:0
社区版块
存档分类
最新评论

iOS 查询数组中的对象

    博客分类:
  • iOS
 
阅读更多

通常情况下,根据一个条件在数组中查询出匹配的对象的方式有如下几种:

 

(1)遍历数组,然后将每一个Item和这个条件进行比对,过滤出匹配的对象

显然这个效率比较低

 

(2)iOS提供另一个效率较高的查询方法,谓词NSPredicate,使用方法如下

1.NSString 对象

NSArray  *array =@["123", @"234" , @"345"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains [cd] %@", "2"];
NSArray *filterdArray = [array filterdArrayUsingPredicate:predicate];
NSLog(@"%@", filterdArray );
//output : @"123", "234"

2.含有属性的对象

@interface Person: NSObject 
{
    NSString *_name;
    NSString *_telephone;
    NSInteger _id;
}

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *telephone;
@property (nonatomic, assign) NSInteger id;

@end
//

1).等于查询
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@", "Ansel"]; 
NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate];

2).模糊查询
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS %@", @"A"]; //predicate只能是对象
NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate];

 更详细的用法,请见这个帖子:

http://www.cnblogs.com/thefeelingofsimple/archive/2013/01/31/2886915.html

分享到:
评论

相关推荐

    iOS模型数组排序

    在iOS开发中,数据模型数组的排序是一个常见的需求,特别是在显示列表或表格视图时。`sortedArrayUsingComparator`是Objective-C中`NSArray`类的一个方法,用于对数组中的对象进行自定义排序。这个方法非常强大,...

    iOS数组和字典转JSON格式

    本教程将详细讲解如何将iOS中的数组和字典转换为JSON格式,这对于发送网络请求或保存本地数据尤为关键。 首先,我们要了解JSON的基本结构。JSON是一种基于文本的数据交换格式,它主要由对象(字典)和数组构成。在...

    oc中数组排序

    总之,理解并掌握Objective-C中数组的排序方法对于iOS和macOS开发至关重要。熟练运用各种排序策略和技巧,不仅可以优化代码的可读性和维护性,还能提高程序的运行效率。在实践中不断复习和探索,是加深理解的最佳...

    Swift5.2 (model数组)归档解档

    在iOS开发中,我们经常使用NSKeyedArchiver和NSKeyedUnarchiver这两个类来实现Swift对象的序列化和反序列化。 在Swift 5.2中,这个过程对于数组特别重要,尤其是当数组包含自定义模型对象时。模型对象通常是那些...

    ios-runtime 防止数组越界崩溃.zip

    在iOS开发中,数组越界和字典value为nil的问题是常见的运行时错误,这些问题可能导致应用突然崩溃,严重影响用户体验。`ios-runtime 防止数组越界崩溃.zip` 提供了一个解决方案,通过导入名为`NSObject+runtime`的...

    ios-数据转换(字典转对象\一、二维对象数组).zip

    总结来说,"ios-数据转换(字典转对象\一、二维对象数组).zip"这个资源关注的是如何在iOS应用中有效地将服务器返回的JSON数据转换为易于管理和操作的对象模型,特别是处理一、二维对象数组的情况。使用这类工具或...

    Objective-C数组操作总结

    需要注意的是,数组中的元素必须是对象指针,且数组是对象,因此要使用类方法进行创建。在实际开发中,灵活运用这些方法可以大大简化代码并提高开发效率。对于初学者来说,掌握这些知识点是必要的,因为几乎在每个...

    ios-在Xcode的控制台里支持array和dictionary对象的中文打印.zip

    可以让Xcode的控制支持array 和dictionary对象的中文打印,Xcode默认打印的是Unicode的码. 此分类的原理就是Unicode的转码. 使用简单,只需要导入分类即可,不需要导入任何头文件. github : ...

    iOS 数组越界 Crash处理经验.docx

    在iOS开发中,数组越界是一个常见的问题,尤其是在使用`UITableView`等控件时。当程序尝试访问数组中不存在的元素时,通常会导致程序崩溃(Crash)。本文将详细介绍如何识别、预防以及解决数组越界导致的Crash问题,...

    ios基础教程之常见的数组使用方法

    在C语言中的数组可以保存任意类型的数据。 3.存储的内存是连续的 二、不可变数组 0.定义数组 //定义一个空数组 NSArray *array1 = [NSArray array] ; array1 = @[];//空数组 //通过指定对象创建数组 array1 = [...

    swift-iOS开发·必会的算法操作字符串数组排序模型对象数组排序

    在实际项目中,我们通常需要对包含自定义模型对象的数组进行排序。假设我们有一个`Person`类,包含`name`属性: ```swift class Person { var name: String // 其他属性和方法... init(name: String) { self....

    iOS字典和模型之间互相转换

    在iOS开发中,数据处理是不可或缺的一部分,而字典与模型之间的转换经常涉及到对象的序列化和反序列化。MJExtension就是这样一个专为iOS设计的轻量级框架,它极大地简化了字典到模型(Dictionary to Model)以及模型...

    IOS开发基础之二维数组详解

    除了字面量访问方式,我们还可以使用数组对象的`objectAtIndex:`方法来访问元素: ```objc NSLog(@"array2d[2][1]:%@", [[[array2d objectAtIndex:2] objectAtIndex:1] intValue]); ``` 第二种创建二维数组的方法...

    iOS归档与解归档,持久化存储

    首先,归档是iOS中的Objective-C runtime提供的一种序列化技术,它能够将对象的状态转换为字节流,方便存储到磁盘上。归档主要依赖于`NSKeyedArchiver`类,通过调用`archiveRootObject:toFile:`方法,可以将指定的...

    ios-iOS 存取数据之归档.zip

    "iOS 存取数据之归档"这一主题主要关注如何使用Objective-C或Swift中的归档技术来持久化存储对象数据。归档是一种将对象转换为字节流,然后可以保存到磁盘上的方法。这允许你在应用关闭后再次打开时恢复这些数据。 ...

    IOS之JSON数据解析

    例如,如果JSON字符串包含数组或者对象中还有其他的数组或对象,SBJson会自动将它们解析为NSArray或NSDictionary。 5. **错误处理** 在实际应用中,我们应该处理可能的解析错误。虽然上面的例子中我们没有显示...

    ios 天气查询示例

    在iOS平台上开发天气查询应用是一...总之,"ios 天气查询示例"涵盖了iOS应用开发中的多个关键点,包括网络请求、数据解析、UI设计和异步编程。通过这个示例,开发者可以深入理解这些技术,并将其应用到其他类似项目中。

    NSData 与 NSString,Byte数组,UIImage 的相互转换

    在iOS和macOS开发中,`NSData`、`NSString`以及`UIImage`是常见的数据类型,它们在不同的场景下有着各自的用途。理解并熟练掌握它们之间的转换是非常重要的,这有助于我们处理各种数据和资源。下面将详细介绍这些...

Global site tag (gtag.js) - Google Analytics