2014-02-26 103 views
3

在Python,我可以很容易地得到一個子陣這樣從NSArray獲取子數組的最優雅方式是什麼?

>> v1 = ['a', 'b', 'c', 'd'] 
>> v2 = v1[1:] 
>> v2 
['b', 'c', 'd'] 

我怎樣才能做到在Objective-C優雅的相同呢?

起初,我以爲這個方法將做的工作:

- (void)getObjects:(id[])aBuffer range:(NSRange)aRange 

但它拷貝對象到一個緩衝單元。我需要將它們添加回NSArray的另一個實例。另外,編譯器對保留/釋放屬性的投訴,我真的不舒服處理。

id* objs; 

    NSRange rng = NSMakeRange(1, [v1 count] - 1); 

    [v1 getObjects:objs range:rng]; # Sending '__strong id *' 
            # to parameter of type '__unsafe_unretained id *' 
            # changes retain/release properties of pointer 

那麼,有沒有更優雅的方式?或者除了通過objectEnumerator迭代之外沒有別的辦法嗎?

回答

10
NSArray* v1 = @[@"a",@"b",@"c",@"d"]; 
NSRange rng = NSMakeRange(1,[v1 count]-1); 
NSArray* v2 = [v1 subarrayWithRange:rng]; 
相關問題