标签: nsarray

使用NSPredicate根据NSDictionary键过滤NSArray

我有一系列字典.

我想基于密钥过滤数组.

我试过这个:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT ==  %@)", @"Football"];

NSArray *filteredArray = [data filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)

这不起作用,我没有结果.我想我做错了什么.我知道如果"SPORT"是一个ivar,这就是方法.我认为如果它是关键的话可能会有所不同.

然而,我无法找到一个例子.

谢谢


更新

我在我正在搜索的字符串周围添加了引号.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT ==  '%@')", @"Football"];
Run Code Online (Sandbox Code Playgroud)

它仍然无法正常工作.


更新2

解决了它.我实际上不得不删除单引号,这似乎与指南所说的相反.

我真正的问题是我有一个嵌套数组,我实际上并没有评估字典.骨头移动.

cocoa objective-c nsdictionary nsarray nspredicate

94
推荐指数
3
解决办法
10万
查看次数

NSArray与NSPredicate使用NOT IN

我有一个NSArray,我想使用NSPredicate过滤掉某些对象,我希望我可以使用NOT IN,因为我看到我可以很容易地进行IN.

所以我有我的阵列:

self.categoriesList
Run Code Online (Sandbox Code Playgroud)

然后我得到了我想删除的值:

NSArray *parentIDs = [self.cateoriesList valueForKeyPath:@"@distinctUnionOfObjects.ParentCategoryID"];
Run Code Online (Sandbox Code Playgroud)

这给了我一个我不想显示的类别的ParentCategoryID列表,所以我想我可以使用NSPredicate来删除它们:

self.cateoriesList = [self.cateoriesList filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"CategoryID NOT IN %@",parentIDs]];
Run Code Online (Sandbox Code Playgroud)

这失败了:

reason: 'Unable to parse the format string "CategoryID NOT IN %@"'
Run Code Online (Sandbox Code Playgroud)

如果我想使用IN,那当然是完美的.

objective-c nsarray nspredicate ios

89
推荐指数
1
解决办法
2万
查看次数

获取NSDictionary的所有密钥作为NSArray

是否有可能将特定的所有密钥NSDictionary作为单独的密钥NSArray

objective-c nsdictionary nsarray

85
推荐指数
2
解决办法
7万
查看次数

enumerateObjectsUsingBlock的BOOL*stop参数是什么:用于?

我最近一直在使用enumerateObjectsUsingBlock:很多我的快速枚举需求,而且我很难理解BOOL *stop枚举块中的用法.

NSArray类引用状态

stop:对布尔值的引用.该块可以将值设置YES为停止进一步处理数组.这个stop论点是一个唯一的论点.您应该只将此布尔值设置YES为块内.

那么当然我可以在我的块中添加以下内容来停止枚举:

if (idx == [myArray indexOfObject:[myArray lastObject]]) {
    *stop = YES;
}
Run Code Online (Sandbox Code Playgroud)

从我能够说的,没有明确设置*stopYES没有任何负面的副作用.枚举似乎在数组的末尾自动停止.那么*stop在一个区块中使用真的有必要吗?

cocoa-touch enumeration objective-c nsarray fast-enumeration

85
推荐指数
1
解决办法
3万
查看次数

将c-struct放入NSArray的最佳方法是什么?

存储c结构的常用方法是NSArray什么?优点,缺点,内存处理?

值得注意的是,有什么之间的区别valueWithBytesvalueWithPointer -由Justin和鲶鱼下面提出.

这是 Apple valueWithBytes:objCType:对未来读者讨论的链接 ......

对于一些横向思考和更多关注性能,Evgen提出了STL::vectorC++中使用的问题.

(这引发了一个有趣的问题:是否有一个快速的c库,不是STL::vector很轻,但更轻,允许最小的"整理数组处理"......?)

那么原来的问题......

例如:

typedef struct _Megapoint {
    float   w,x,y,z;
} Megapoint;
Run Code Online (Sandbox Code Playgroud)

那么:在一个NSArray成语中存储一个人自己的结构的正常,最好,惯用的方式是什么?你如何处理那个成语中的记忆?

请注意,我特意寻找存储结构的通常习惯用法.当然,人们可以通过创建一个新的小班来避免这个问题.但是,我想知道实际将结构放入数组的常用习惯,谢谢.

顺便说一句,这可能是NSData的方法吗?不是最好的......

Megapoint p;
NSArray *a = [NSArray arrayWithObjects:
    [NSData dataWithBytes:&p length:sizeof(Megapoint)],
    [NSData dataWithBytes:&p length:sizeof(Megapoint)],
    [NSData dataWithBytes:&p length:sizeof(Megapoint)],
        nil];
Run Code Online (Sandbox Code Playgroud)

BTW作为参考点,感谢Jarret Hardie,以下是如何存储CGPoints和类似的NSArray:

NSArray *points = [NSArray arrayWithObjects:
        [NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
        [NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
        nil];
Run Code Online (Sandbox Code Playgroud)

(请参阅如何以简单的方式将CGPoint对象添加到NSArray?)

iphone cocoa struct objective-c nsarray

84
推荐指数
2
解决办法
3万
查看次数

对日期字符串或对象的NSArray进行排序

我有一个NSArray包含这样的日期字符串(即NSString):"星期四,2009年5月21日19:10:09 -0700"

我需要NSArray按日期排序.我考虑过首先将日期字符串转换为NSDate对象,但是如何按NSDate对象排序则会陷入困境.

谢谢.

sorting cocoa objective-c nsdate nsarray

83
推荐指数
6
解决办法
8万
查看次数

如何创建"选择器阵列"

我正在使用iPhone SDK(3.0),我正在尝试创建一个选择器数组,以在一个类中调用各种方法.

显然,我做错了(我认为@selector不被认为是一个类,因此将它们填充到NSArray中是行不通的).

我试过这个,但这显然是错的.

有一个简单的方法来拥有这样的选择器数组吗?或者是否有更好的方法来迭代一组方法?

selectors = [NSArray arrayWithObjects:
                          @selector(method1),
                          @selector(method2),
                          @selector(method3),
                          @selector(method4),
                          @selector(method5),
                          @selector(method6),
                          @selector(method7), nil];

for (int i = 0; i < [selectors count]; i++) {
    if ([self performSelector:[selectors objectAtIndex:i]]) // do stuff;
}
Run Code Online (Sandbox Code Playgroud)

objective-c selector nsarray ios

82
推荐指数
4
解决办法
2万
查看次数

检查NSArray中是否包含NSString实例

我有一个包含一堆字符串的数组,我想检查数组中是否包含某个字符串.如果我containsObject在数组上使用:message,我会得到正确的结果.NSString具有相同字符串的所有对象是否指向同一对象?或者为什么containsObject:工作?

NSArray *stringArray = [NSArray arrayWithObjects:@"1",@"2",@"3",anotherStringValue, nil];
if([stringArray containsObject:@"2"]){
  //DO SOMETHING
}
Run Code Online (Sandbox Code Playgroud)

cocoa nsstring nsarray

75
推荐指数
3
解决办法
4万
查看次数

如何按Swift中的数组元素进行分组

假设我有这段代码:

class Stat {
   var statEvents : [StatEvents] = []
}

struct StatEvents {
   var name: String
   var date: String
   var hours: Int
}


var currentStat = Stat()

currentStat.statEvents = [
   StatEvents(name: "lunch", date: "01-01-2015", hours: 1),
   StatEvents(name: "dinner", date: "01-01-2015", hours: 1),
   StatEvents(name: "dinner", date: "01-01-2015", hours: 1),
   StatEvents(name: "lunch", date: "01-01-2015", hours: 1),
   StatEvents(name: "dinner", date: "01-01-2015", hours: 1)
]

var filteredArray1 : [StatEvents] = []
var filteredArray2 : [StatEvents] = []
Run Code Online (Sandbox Code Playgroud)

我可以手动调用下一个函数,以便有两个按"同名"分组的数组.

filteredArray1 = currentStat.statEvents.filter({$0.name == "dinner"}) …
Run Code Online (Sandbox Code Playgroud)

arrays nsarray ios swift

72
推荐指数
5
解决办法
5万
查看次数

我想使用NSSortDescriptor对数组进行排序

我在排序数组wrt数据库时遇到问题:

NSSortDescriptor *sorter = [[NSSortDescriptor alloc] initWithKey:@"w" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject: sorter]; 

[mGlossaryArray sortUsingDescriptors:sortDescriptors]; 
[sorter release];
Run Code Online (Sandbox Code Playgroud)

在数据库中有一些第一个大写字母,因为大写字母它没有显示我正确的排序输出.这里我用rt"w"排序一个数组,这是我在数据库中的表列.在这里,我附加了输出的屏幕截图,其中"癌症"首先出现在"c"之后,但这不正确,因为大写单词而没有按字母顺序排序.

例如.如果小写中有"able"和"aCid"那么它将首先显示aCid然后能够显示aCid,并且还存在如果第一个字母是大写字母它首先出现的情况,例如"Able"和"a".在这里Able首先显示.在此输入图像描述

sorting iphone jquery-ui-sortable nsarray

71
推荐指数
3
解决办法
4万
查看次数