我正在尝试将NSData
保存在NSUserDefaults
循环中,但我经常收到错误。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *index = [NSString stringWithFormat:@"alltweetsoftrend%d", i];
[defaults setObject:tweetData forKey:index];
[defaults synchronize];
其中i
是循环的索引,这意味着key在任何情况下都不为null。我还检查了我的NSData(tweetData)
,这也不是空的。我只是在保存中遇到这个错误。
答案 0 :(得分:2)
您的代码没有任何内在错误。 NSData太大而无法存储,但在这种情况下我不会真正期待SIGABRT。最可能的问题是NSData是使用[NSData dataWithBytesNoCopy:length:]
创建的,并且NSData指向的缓冲区已被释放。可能还有其他问题导致问题,例如在线程之间使用共享NSData全局变量,从CFDataRefs中使用不正确的类型转换等等。
尝试编写不同的NSData并查看它是否有效。例如:
NSData *tweetData = [NSData dataWithBytes:"Hello" length:6];
。我打赌这有用,所以问题与你的tweetData如何创建并发送到这段代码有关。