2010-06-04 92 views
0

我正在嘗試將NSManagedObjects的整個數組加載到NSArray中,然後在點擊按鈕時使用整數迭代器遍歷數組。 xCode似乎不喜歡在.h中聲明整數和NSArray,然後在.m中的不同方法中使用。創建全局數組和迭代器

我想知道有經驗的開發人員在解決這樣的問題時會採取什麼樣的適當途徑。

流程如下: 1.將數據加載到數組中。 2.使用索引0處的信息設置標籤。int i = 0; 3.用戶點擊按鈕; i ++,檢索索引1處的元素。

等等,直到數組結束,或者用戶停止點擊按鈕。

編輯:

這是工作的代碼,但我的感覺是不正確的:

XYZViewController.h

@interface XYZViewController : UIViewController <NSFetchedResultsControllerDelegate>{ 
    int index; 
} 

XYZViewController.m

import "XYZViewController.h" 

- (void)function1{ 
    index = 0; 
} 

- (void)function2{ 
    index++; 
} 

-(void)function3{ 
    NSManagedObject *obj = [results objectAtIndex:index]; 
} 

這是實際正確?它工作,但不優雅;一點也不。

+0

你能告訴我們你試過的代碼和編譯錯誤信息嗎? – progrmr 2010-06-04 13:49:30

回答

1

您是否在類的外部聲明瞭.h文件中的整數和NSArray?如果是這樣,它將在包含該文件的每個編譯模塊中定義,這會在鏈接時間=>錯誤時導致多個符號。

解決方案:如果您只需在一個.m文件中使用NSArray/int,請將它們移動到那裏。否則,聲明爲在.H extern,並在正好1個 .m文件中定義它們,就像這樣:

// 1.h 
extern int myInt; 

// 1.m 
#include "1.h" 
int myInt; 
// Use myInt 

// 2.m 
#include "1.h" 
// Use myInt 
+0

我曾嘗試使用extern但似乎收到$ non_lazy_ptr)。這個想法是在.h中聲明int,然後在.m中使用它的三個獨立函數(函數:一個函數初始化,一個迭代,一個檢索索引。) – 2010-06-04 13:52:35

+0

順便說一下,這只是公平的說只使用「int myInt」的作品,但我覺得這是不正確的。 – 2010-06-04 13:54:23

+0

@ Mr .:由於您試圖將它放入'@ implementation'部分,'extern'將不起作用。這就是爲什麼他問'你是否在類的外部聲明瞭整型和NSArray?' - 我認爲你在你的例子中編寫的代碼是很好的,因爲變量保持私有需要它。 – Senseful 2010-06-04 14:29:27

1

你寫的代碼是正確的,因爲你要保留的變量爲私有的可視性儘可能。在這種情況下,你似乎只需要XYZViewController.m文件中的這個變量。實際上,您可能需要考慮使用@private作爲前綴,以使其他單位更難以看到它。

+0

我加了@private,這看起來好多了。謝謝你和其他人的幫助。 – 2010-06-04 14:38:58