Открытый класс: делает указатель из целого числа без приведения - PullRequest
0 голосов
/ 23 мая 2010

Я написал класс, который поможет сохранять и загружать данные ради сохранения моего приложения для iPhone, но у меня есть проблема с некоторыми NSUIntegers, через которые я передаю.

По сути, у меня есть код для использования указателей, но в конце концов он должен начать с фактического значения, верно? Так я получаю эту ошибку

warning: passing argument 1 of 'getSaveWithCampaign:andLevel:' makes pointer from integer without a cast

Мой код выложен так.

(Постоянство - название класса)

NSDictionary *saveData = [Persistence getSaveWithCampaign:currentCampaign andLevel:[indexPath row]];

Вот настойчивость.m

#import "Persistence.h"


@implementation Persistence

+ (NSString *)dataFilePath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    return [documentsDirectory stringByAppendingPathComponent:kSaveFilename];
}

+ (NSDictionary *)getSaveWithCampaign:(NSUInteger *)campaign andLevel:(NSUInteger *)level
{
    NSString *filePath = [self dataFilePath];

    if([[NSFileManager defaultManager] fileExistsAtPath:filePath])
    {
        NSDictionary *saveData = [[NSDictionary alloc] initWithContentsOfFile:filePath];

        NSString *campaignAndLevelKey = [self makeCampaign:campaign andLevelKey:level];

        NSDictionary *campaignAndLevelData = [saveData objectForKey:campaignAndLevelKey];

        [saveData release];

        return campaignAndLevelData;
    }
    else
    {
        return nil;
    }

}

+ (NSString *)makeCampaign:(NSUInteger *)campaign andLevelKey:(NSUInteger *)level
{
    return [[NSString stringWithFormat:@"%d - ", campaign+1] stringByAppendingString:[NSString stringWithFormat:@"%d", level+1]];
}   

@end

1 Ответ

2 голосов
/ 23 мая 2010

Вы должны избавиться от * в ( NSUInteger *) в методе getSaveWithCampaign.

Если вы внимательно прочитаете сообщение об ошибке, в нем говорится, что вы делаете указатель (*) из целого числа без приведения.

Ваш метод getSaveWithCampaign теперь должен иметь следующую подпись:

+ (NSDictionary *)getSaveWithCampaign:(NSUInteger)campaign andLevel:(NSUInteger)level

Если, с другой стороны, по какой-то причине вы хотите использовать указатели, вы можете передать NSUInteger с префиксом амперсанда (&) для передачи адреса NSUInteger в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...