ну, у нас есть несколько способов, с помощью которых мы можем работать с системой делегатов или использовать storyboardSegue
1- As working with setter and getter method like in viewController.h
@property (retain, nonatomic) NSString *str;
now, in viewController.m
@synthesize str;
here i have pdf url and segue to another viewController like this and pdfObject is my pdfModel basicilly is NSOBJECT class.
str =[NSString stringWithFormat:@"%@",pdfObject.objPath];
NSLog(@"pdfUrl :***: %@ :***:",pdfUrl);
[self performSegueWithIdentifier:@"programPDFViewController_segue" sender:self];
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"programPDFViewController_segue"]){
programPDFViewController *pdfVC = [segue destinationViewController];
[pdfVC setRecievedPdfUrl:str];
}
}
Теперь успешно я получил строку URL-адреса в формате PDF и другой ViewController и использовать эту строку в веб-просмотре ...
2- При работе с такими делегатами у меня есть один класс утилит NSObject, содержащий мои методы dateFormatter, sharedInstance, EscapeWhiteSpaceCharacters, convertImageToGrayScale и другие методы, с которыми я работал на протяжении всего процесса. application, теперь в utilities.h
. В этом случае вам не нужно создавать переменные при постоянном анализе данных от одного к другому контроллеру представления один раз, когда ваша созданная строковая переменная в utilities.h просто делает его равным nil; и снова использовался
@interface Utilities : NSObject
Utilities.h
+(Utilities*)sharedInstance;
@property(nonatomic,retain)NSString* strUrl;
, теперь в утилитах.m
@implementation utilities
+(utilities*)sharedInstance
{
static utilities* sharedObj = nil;
if (sharedObj == nil) {
sharedObj = [[utilities alloc] init];
}
return sharedObj;
}
now its done come to your firstViewController.m and call delegate
NSString*str =[NSString stringWithFormat:@"%@",pdfObject.objPath];
[Connection sharedInstance].strUrl=nil;
[Connection sharedInstance].strUrl=str;
Now go to you secondViewController.m directly use it without creating variable
in viewwillapear what i did
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:YES];
[self webViewMethod:[Connection sharedInstance].strUrl];
}
-(void)WebViewMethod:(NSString)Url{
// working with webview enjoy coding :D
}
эта работа делегата надежна с управлением памятью
В зависимости от того, что вы хотите сделать, pyodbc может быть тем, что вы ищете.
import pyodbc
def mdb_connect(db_file, user='admin', password = '', old_driver=False):
driver_ver = '*.mdb'
if not old_driver:
driver_ver += ', *.accdb'
odbc_conn_str = ('DRIVER={Microsoft Access Driver (%s)}'
';DBQ=%s;UID=%s;PWD=%s' %
(driver_ver, db_file, user, password))
return pyodbc.connect(odbc_conn_str)
conn = mdb_connect(r'''C:\x.mdb''') # only absolute paths!
Примечание: вы можете скачать свободно распространяемый ] new-driver , если у вас не установлен MSOffice .
Не думаю, что с win32 сложно. Попробуйте использовать его модуль odbc. Пример кода, работающего с базой данных ODBC и PostgreSQL:
import odbc
def get_pg_ver(db_alias):
connection = odbc.odbc(db_alias)
try:
cursor = connection.cursor()
cursor.execute('SELECT version()')
for row in cursor.fetchall():
print row[0]
finally:
connection.close()
get_pg_ver('odbc_name/user/passwd')
Это очень похоже на все драйверы db, которые я использовал в Python и Jython (я работаю с PostgreSQL, Oracle и Informix).