2009-11-01 21 views
2

中創建一個文件如何在未創建該字符串的文件中使用NSString?在不同的文件中使用NSString,然後在

ex。 我創建了thisone.m一個字符串,但我想在thatone.m 從這個字符串的數據將來自爲UITextField

+0

請澄清問題並提供一些背景。 – 2009-11-01 01:52:43

+0

那更好? – 2009-11-01 01:53:41

回答

1

如果您沒有訪問thisone對象,你可以存儲的字符串作爲ThisOne類變量,只要你並不需要一個不同爲你的每個對象。把你們班

extern BOOL theString; 

訪問(不是方法裏面,但的@implementation外)是

[ThisOne theString]; 

這並不像ennuikiller的答案一樣好,但它可能是你需要。

+0

好的,所以我把它關閉了,但是我得到的錯誤(可能不會響應'+ string'),所以至少我知道這是有點工作 – 2009-11-01 02:26:19

+0

把它放在.h文件中,在@interface之外。 – coneybeare 2009-11-01 02:29:51

+0

我仍然收到錯誤... – 2009-11-01 22:19:36

1

要來使用相同的刺痛(即相同的數據),我不知道到底你問什麼,但有很多方法可以在文件(或對象)之間共享數據。您可以將其定義爲一個類中的實例變量,並引用其他類中的對象實例。您可以將數據傳遞給在另一個對象上調用的方法,或者通過將其作爲UIApplication的實例變量將其作爲全局變量共享。

再次,沒有更具體的問題,這應該讓你思考正確的道路。

舉個簡單的例子:

@interface MyObject : NSObject { 
    NSString *mystring; 
} 
+0

我怎樣才能讓一個NSString的實例變量? – 2009-11-01 01:57:50

+0

好吧,那麼我會怎麼做,從那裏做所有事情....我必須在.m中做任何事嗎? – 2009-11-01 02:17:37

0

我知道有些人不喜歡#define,但是他們對這個老派的C程序員很好。

在每個項目中,我有一個包含了一堆#的文件「Strings.h」定義的,如:

#define SK_String_I_Want_To_Display @"String I Want To Display" 

(其中SK_是我作序,表示「字符串常量」)

本地化,我有一個名爲 「LocalStrings.h」 另一個文件中包含字符串:

#define SK_LOCAL(a) NSLocalizedString(@a, "") // keeps string defs simple 
#define SK_Localized_String SK_LOCAL("Localized String") 
#define SK_Another_String  SK_LOCAL("Another String") 

然後我#IMPORT 「Strings.h」 或在需要的地方 「LocalStrings.h」。因爲我在一個文件中包含了所有本地化的字符串,所以很容易確保我已經完成了本地化。

這種方法最大的問題是,你必須要小心,不要做這樣的事情:

#define SK_Another_String  SK_LOCAL("Another String"); 

---爲分號在年底可能會導致棘手的bug都很難找到。

將#define擴展到位的開銷非常低。如果更改其中一個.h文件,編譯時間會稍長一些,但我發現該解決方案運行良好。

相關問題