有谁知道反正比这更好吗?
解决方法 扩展一点上的问题,有几种情况下,人们可能需要一个数组的最后一个对象,用不同的方式来获得它。在一个直接的Cocoa程序
如果只是想在标准的Cocoa程序的过程中获取对象,那么这将会:
[myArray lastObject]
为了解决计数器的问题 – 不需要实现自己的,或者:
NSUInteger myCount = [myArray count];
使用键值编码(KVC)
如果需要通过KVC访问数组的最后一个对象,该故事需要一点解释。
首先,从数组请求正常键的值将创建一个新的数组,该数组包含数组中每个对象的键的值。换句话说,从一个数组中获取一个关键字lastObject的请求将使数组使用关键字lastObject向每个对象发送valueForKey:。除了不是预期的结果,它也可能会抛出异常。
因此,如果真的需要向数组本身发送一个键(而不是它的内容),则键需要用@ -sign前缀。这告诉数组,键是为数组本身,而不是其内容。
因此,键的形式必须是@lastObject,并且应该这样使用:
NSArray *arr = @[@1,@2,@3];NSNumber *number = [arr valueForKey: @"@lastObject"];
在类描述符中
在真实程序中如何使用该键的示例是其中数组的数组需要由每个内部数组中的最后一个对象排序的情况。
上面的键只是用在排序描述符中:
NSArray *arrayOfArrays = @[@[@5,@7,@8],@[@2,@3,@4,@6],@5]];NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey: @"@lastObject" ascending: YES];NSArray *sorted = [arrayOfArrays sortedArrayUsingDescriptors: @[sd]];
在谓词中
同样,为了过滤数组数组,键可以直接在谓词中使用:
nspredicate *pred = [nspredicate predicateWithFormat: @"self.@lastObject > 5"];NSArray *filtered = [arrayOfArrays filteredArrayUsingPredicate: pred];
喜欢离开自我部分的人可以简单地使用格式@“@ lastObject> 5”
总结以上是内存溢出为你收集整理的objective-c – 如何获取NSArray的最后一个对象全部内容,希望文章能够帮你解决objective-c – 如何获取NSArray的最后一个对象所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)