我正在尝试从 pList 中获取一个小整数(例如 4)并将其放入托管对象中以供以后操作。但是,当我将它从托管对象中取出并放入 NSInteger 时,它已经完全改变了。4 变成了 237371328 !
该数字在 pList 中存储为“Number”,在管理对象中存储为整数 16。我有两个字段:timesAsNumber 是整数 16,timesUsed 是字符串(我目前的工作!)。
涉及的代码行是:
NSArray *usageFetchResults = [self.objectContext executeFetchRequest:request error:&error];
NSLog(@"Here is the usageArray: %@, with error: %@",usageFetchResults, error);
这给出了日志结果:
数据:{\n feature = video;\n timesAsNumber = 4;\n timesUsed = 4;\n})" ),错误:(null)
所以记录器知道 timesAsNumber 的值为 4。
NSLog(@"timesAsNumber straight from the Managed Object: %@", [currentUseData valueForKey:@"timesAsNumber"]);
直接从托管对象产生结果: timesAsNumber: 4 所以仍然没有问题。
然而,
NSInteger timesUsedAsInt = [currentUseData valueForKey:@"timesAsNumber"];
NSLog(@"times As Number now reads: %ld", (long)timesUsedAsInt);
产生结果:times As Number 现在读取:237371328
我需要将数字作为整数进行操作,而我将存储为字符串并来回转换的解决方法并不优雅!
我教高中计算,所以我知道浮点数的存储:excess-127、二进制补码等。我认为问题是由整数在 pList、托管对象和 NSInteger 中存储的不同方式引起的。但是,我无法弄清楚这些存储方法是什么,以便我可以使用它们。
感激地收到任何帮助。
蒂姆。