标签: nsarray

是否可以按类过滤NSArray?

有没有办法构造一个谓词来按类类型过滤?

我目前循环遍历数组并检查每个对象的类.也许有更干净的方式?

cocoa cocoa-touch objective-c nsarray nspredicate

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

如何从NSArray获得NSNumber的总和?

我有一个像大等NSArray包含...NSNumbers3, 4, 20, 10, 1, 100,

如何将所有这些NSNumber的总和(3 + 4 + 20 + 10 + 1 + 100 + etc...)作为一个总和NSInteger

谢谢!

iphone objective-c nsnumber nsarray nsinteger

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

NSArray objectAtIndex:速记

可能重复:
Objective-C中是否有一些文字字典或数组语法?

我最近注意到一些奇怪的东西似乎在objective-c中起作用.

当我有一个阵列,

NSArray *myArray = @[@"1", @"b", @"3", @"d"];
Run Code Online (Sandbox Code Playgroud)

我通常可以访问第二个元素,

NSString *element = [myArray objectAtIndex:1]; // second element 
Run Code Online (Sandbox Code Playgroud)

但是我现在似乎也可以通过它访问它.

NSString *element = myArray[1];
Run Code Online (Sandbox Code Playgroud)

有谁知道这现在是一个定义的行为,因此可以安全使用,还是应该避免它?感谢任何能提供帮助的人!!

objective-c nsarray shorthand ios

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

检查数组是否包含另一个数组的相同对象的最快方法

目标是比较两个数组并检查它们是否包含相同的对象(尽可能快 - 数组中有很多对象).无法检查数组,isEqual:因为它们的排序方式不同.

我已经尝试过这里发布的解决方案(/sf/answers/79689221/ - 请参阅Peter Hosey发布的帖子的最后一个代码片段).但这不适用于不同排序的数组.

我现在使用的代码如下:

+ (BOOL)arraysContainSameObjects:(NSArray *)array1 andOtherArray:(NSArray *)array2 {
    // quit if array count is different
    if ([array1 count] != [array2 count]) return NO;

    BOOL bothArraysContainTheSameObjects = YES;
    for (id objectInArray1 in array1) {
        BOOL objectFoundInArray2 = NO;
        for (id objectInArray2 in array2) {
            if ([objectInArray1 isEqual:objectInArray2]) {
                objectFoundInArray2 = YES;
                break;
            }
        }
        if (!objectFoundInArray2) {
            bothArraysContainTheSameObjects = NO;
            break;
        }
    }

    return bothArraysContainTheSameObjects;
}
Run Code Online (Sandbox Code Playgroud)

这有效,但这些是两个嵌套的快速枚举.有没有办法做更快的比较?

objective-c nsarray fast-enumeration ios

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

如何从NSArray中的每个NSDictionary获取特定键的所有值?

我有一个包含字典对象的数组.在每个字典中,密钥是常见的.现在我想获得该密钥的所有值.我有迭代的这些值,但我正在寻找一些直接的方法或一个默认的方法来完成这项工作.

你能帮我一个默认的方法来达到目的吗?谢谢.

数据结构是这样的:

<array>
    <dict>
        <key>Match</key>
        <string>Football</string>
        <key>Stadium</key>
        <string>XXXXX</string>
    </dict>
    <dict>
        <key>Match</key>
        <string>HOCKY</string>
        <key>Stadium</key>
        <string>XXXXX</string>
    </dict>
 </array>
Run Code Online (Sandbox Code Playgroud)

我现在这样做:

NSMutableArray * matches = [[NSMutableArray alloc] init];
        for (int i = 0; i< myArray.count; i++){
            [matches insertObject:[[myArray objectAtIndex:i] objectForKey:@"Match"] atIndex:i];
        }
        [matchDataArray addObjectsFromArray:matches];
Run Code Online (Sandbox Code Playgroud)

它给了我正确的答案.但我不想做这个迭代.我想要一个方法,它将从数组的所有索引返回"匹配"键的所有值,并立即保存在另一个数组中.新创建的数组将只包含来自数组的所有索引的Match键值.

这可能吗??

objective-c nsdictionary key-value-coding nsarray

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

使用sortedArrayUsingComparator对NSArray进行排序

Objective-C我可以NSArray使用此声明排序:

NSArray *sortedArray = [persons sortedArrayUsingComparator:^NSComparisonResult(Person *p1, Person *p2) {
    return [p1.name compare:p2.name];
}];
Run Code Online (Sandbox Code Playgroud)

我无法用Swift重现相同的声明.我发现的只是使用Array.

sorting nsarray swift

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

在swift中对成员'joinWithSeparator'的模糊引用

我正在使用Google的' reverseGeocodeCoordinate'来获取基于纬度和经度的地址.
我在实现中遇到以下错误

对成员'joinWithSeparator'的模糊引用

以下是我的实施:

let aGMSGeocoder: GMSGeocoder = GMSGeocoder()
aGMSGeocoder.reverseGeocodeCoordinate(CLLocationCoordinate2DMake(17.45134626, 78.39304448)) {
    (let gmsReverseGeocodeResponse: GMSReverseGeocodeResponse!, let error: NSError!) -> Void in

    let gmsAddress: GMSAddress = gmsReverseGeocodeResponse.firstResult()
    print("lines=\(gmsAddress.lines)")
    let addressString = gmsAddress.lines.joinWithSeparator("")
    print("addressString=\(addressString)")

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试addressString使用数组' gmsAddress.lines'中的元素创建一个,但最终会出现错误消息.

实施了一些示例代码片段来测试' joinWithSeparator'

let sampleArray = ["1", "2", "3", "4", "5"]
let joinedString = sampleArray.joinWithSeparator("")
print("joinedString=\(joinedString)")
Run Code Online (Sandbox Code Playgroud)

它成功了.
我观察到的是' sampleArray'是一个类型的元素数组String,但是' gmsAddress.lines'是' AnyObject' 类型的元素数组,在' GMSAddress'库中找到:

/** An array of NSString containing formatted lines of the address. …
Run Code Online (Sandbox Code Playgroud)

nsarray google-maps-sdk-ios swift ios9

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

在NSArray中搜索值匹配值

我有一个NSArray objects,它有一个特殊的属性叫name(类型NSString).
我有第二个NSStrings的NSArray names.

我想获得一个NSArray所有objects.name属性相匹配的一个names第二NSArray的.

我如何快速有效地解决这个问题,因为这将经常需要.

iphone objective-c nsarray ipad

22
推荐指数
4
解决办法
6万
查看次数

使用NSPredicate过滤包含字典的数组

有一个数组,每个元素都是一个NSDictionary.

NSMutableArray *mutArr = [NSMutableArray array];

for (Person *person in persons) {
    NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:person.name, @"name", person.email, @"email", nil];
    [mutArr addObject:dict];
}

self.arr = [[NSArray alloc] initWithArray:mutArr];
Run Code Online (Sandbox Code Playgroud)

如何通过使用方法使用arr名称或电子邮件文件管理包含字符串.@"filter string"filterArrayUsingPredicate:

提前致谢!

iphone nsarray nspredicate ios

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

如何将CFArray转换为Swift数组?

根据Apple的"使用Swift with Cocoa和Objective-C","在Swift中,您可以互换使用每对免费桥接基础和Core Foundation类型".这使得使用Core Foundation的声音比实际更简单...

我正在尝试使用从CoreText返回的CFArray.我有这个代码:

let lines: CFArrayRef  = CTFrameGetLines(frame)
Run Code Online (Sandbox Code Playgroud)

我看到两种可能的方法来访问这个数组的成员.现在也没有为我工作.


方式#1 - 直接使用CFArray

let line: CTLineRef = CFArrayGetValueAtIndex(lines, 0)
Run Code Online (Sandbox Code Playgroud)

这会产生错误"'ConstUnsafePointer <()>',不能转换为'CTLineRef'".转换似乎不会改变此错误.

同样,我很乐意将"可互换"的行用作Swift数组,就像我说的那样.然而,

let line: CTLineRef = lines[0]
Run Code Online (Sandbox Code Playgroud)

产生错误"'CFArrayRef'没有名为'subscript'的成员"


方式#2 - 将CFArray转换为Swift数组

var linesArray: Array = [CTLineRef]()
linesArray = bridgeFromObjectiveC(lines, linesArray.dynamicType)
Run Code Online (Sandbox Code Playgroud)

在这里,我声明了一个Swift数组并将其设置为等同于桥接的CFArray.这个编译没有错误,但是当我运行它时,我在第二行遇到EXC_BREAKPOINT崩溃.也许我没有在这个上正确使用Swift语言......

core-foundation nsarray swift

22
推荐指数
3
解决办法
9778
查看次数