2012-10-25 75 views
3

在sqlite3_open函數(通用C函數)中,我需要將sqlite3通用C指針的地址作爲參數發送。
例子:在Objective-C中獲取指針變量的地址

//Valid code 
NSString * databaseFile; //Path of database file. (Objective-C Object) 
sqlite3 * db; //Pointer to hold the sqlite database. (C Pointer) 

sqlite3_open([databaseFile UTF8String], &db); //db is sent using the & operator. 

的問題是,我需要從對象中獲得*分貝變量。 我知道這個代碼是錯誤的,但它是一種方法來解釋我需要什麼:

//I need to get the address of the pointer 'database' from inside the Objective-C Object 'object'. 
//I hope one of those wrong lines explain what I want: 

sqlite3_open([databaseFile UTF8String], &[object database]); 
sqlite3_open([databaseFile UTF8String], [object &database]); 
sqlite3_open([databaseFile UTF8String], &(object->database); 

我希望有人undertands我...哈哈哈 感謝您的時間! =)

+0

你可能想建立一個臨時變量'database',然後通過'&database'爲' sqlite3_open()',然後調用'[object setDatabase:database]'(或'object.database = database') – nielsbot

+0

我認爲當你通過引用一個屬性來表示「來自對象內部」時。請記住,屬性引用變成了對getter或setter方法的調用。你不能「佔地」。 –

+0

@nielsbot是的!謝謝!這很簡單......我在這個問題上漫遊了很長時間,所以我忘記了我可以簡單地做相反的事情。請將此設置爲答案,以便我可以對其進行提升。 :) –

回答

1

假設MyClass看起來是這樣的:

@interface MyClass : NSObject 
... 
@property (nonatomic) sqlite3 * database ; 
... 
@end 

您的代碼將是:

MyClass * object = ... ; 

sqlite3 * database ; 
sqlite3_open(..., & database) ; 

object.database = database ; 
+0

完美!謝謝! = d –