【发布时间】:2010-05-22 23:21:42
【问题描述】:
为了我的 iPhone 应用程序的持久性,我编写了一个类来帮助保存和加载数据,但是我遇到了一些我正在传递的 NSUInteger 的问题。
基本上,我有使用指针的代码,但最终它必须开始成为一个实际值,对吧?所以我得到这个错误
warning: passing argument 1 of 'getSaveWithCampaign:andLevel:' makes pointer from integer without a cast
我的代码是这样布局的。
(持久化是类名)
NSDictionary *saveData = [Persistence getSaveWithCampaign:currentCampaign andLevel:[indexPath row]];
这里是 Persistence.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
【问题讨论】:
-
方法调用中
currentCampaign的类型是什么? -
请告诉我们您调用
getSaveWithCampaign的方法。 -
currentCampaign 是一个 NSUInteger 并且被声明和合成。
标签: iphone objective-c pointers casting persistence