Каков формат вызова этого кода? - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть этот код (который я не написал):

- (BOOL)execute:(NSString *)sqlCommand error:(NSError **)error
{
    const char *sql = [sqlCommand UTF8String];
    char *errorPointer;
    if (sqlite3_exec(database, sql, NULL, NULL, &errorPointer) != SQLITE_OK)
    {
        if (error)
        {
            NSString *errMsg = [NSString stringWithCString:errorPointer encoding:NSUTF8StringEncoding];
            NSString *description = @"An error occurred executing the SQL statement";
            NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:description, NSLocalizedDescriptionKey, errMsg, NSLocalizedFailureReasonErrorKey, nil];
            *error = [[[NSError alloc] initWithDomain:SQLCipherManagerErrorDomain code:ERR_SQLCIPHER_COMMAND_FAILED userInfo:userInfo] autorelease];
            sqlite3_free(error);
        }
        return NO;
    }
    return YES;
}

У меня также есть метод без параметра «error», который я бы назвал, используя что-то вроде этого:InsertCommand];

Мой вопрос: какой формат вызова я бы использовал для метода с параметром error, чтобы я мог видеть любые ошибки обратно из вызова?

Ответы [ 3 ]

3 голосов
/ 19 апреля 2011

вот так:

NSError* error = nil;
BOOL success = [dm execute:insertCommand error:&error];

if (success == NO)
{
  // do whatever if failed
}

см. Также "Обработка объектов ошибок, возвращаемых из методов" из документации по какао.

2 голосов
/ 19 апреля 2011
NSError *error = nil; //your error
if(![dm execute:sqlCommand error:&error])
{ //Pass the address to your pointer ^^

    //Since you passed the address of your error pointer
    //your execute command was able to set it to an
    //NSError if one occurrs
}
0 голосов
/ 19 апреля 2011

Вы должны объявить объект NSError вне вызова кода и передать адрес:

NSError *error;
BOOL success = [whateverObj execute:theSqlStmt error:&error];
if (!success) {
    // Handle error
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...