我正在使用iPad应用。
启动应用后,用户必须输入一个号码。有了这个id,我会检查一个csv文件以获取有关用户的信息。
信息以单身人士保存。这个单身人士给我带来了问题:
第1步:初始化我的单身人士
+(ASMagasin*) sharedInstance {
if (myMagasin == nil){
myMagasin = [[ASMagasin alloc]init];
}
return myMagasin;
}
第2步:我调用可以使用csv文件的函数
- (id)init {
if (self = [super init]) {
NSError * error;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString * num_magasin = [defaults objectForKey:kUserDefautNumMagasin];
[self loadMagFromCsv:filePathCsv withMagasin:num_magasin];
}
return self;
}
第3步:
-(void)loadMagFromCsv:(NSString *)filePath withMagasin:(NSString *) num_magasin
{
NSError *error;
NSString *csvData = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
NSArray *gcRawData = [csvData componentsSeparatedByString:@"\n"];
NSArray *singleGC = [NSArray array];
for (int i = 0; i < gcRawData.count; i++)
{
NSString *nextGCString = [NSString stringWithFormat:@"%@", gcRawData[i]];
singleGC = [nextGCString componentsSeparatedByString:@","];
if ([singleGC[0]isEqualToString:num_magasin]){
_num=singleGC[0];
_libelle=singleGC[1];
_client_defaut_nom=singleGC[2];
_client_defaut_prenom=singleGC[3];
_client_defaut_tel=singleGC[4];
_client_defaut_mail=singleGC[5];
_cp=singleGC[6];
_ville=singleGC[7];
_pays=singleGC[8];
}
}
}
在此函数中,我的变量错误在初始化之前具有此值:
(NSError *)error = 0x0000000000000001 domain:从0x19读取内存 失败(读取8个字节中的0个) - 代码:从0x11读取内存失败(0 读取8个字节)
我不知道如何解决这个问题以及这个错误来自何处。
答案 0 :(得分:0)
您正在查看堆中的随机内存。这毫无意义。您的NSError
此时尚未初始化,更不用说分配了值。
执行行
后,您可以(并且应该)检查error
的值
NSString *csvData = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
在此之前error
没有有用价值。
答案 1 :(得分:0)
我发布它是希望它可以帮助面临同样问题的其他人。不确定它的确切原因,但我在一个带有 _block 的变量上遇到了它。删除 _block 解决了这个问题,也没有给出任何警告。不确定这里发生了什么,因为我在更新到 iOS 14 后遇到了它。如果我发现任何更有趣的东西,我会更新。