Objective c NSMutableArray addObjects NSString
我对NSString和NSMutableArray有问题 我有:Objective c NSMutableArray addObjects NSString,objective-c,nsstring,nsmutablearray,Objective C,Nsstring,Nsmutablearray,我对NSString和NSMutableArray有问题 我有: NSString*msgID; NSMUTABLEARRY*mArray 而msgIDstring是每条消息的唯一ID,每次收到新消息时,它都会自行更改。 现在我想将这些ID保存到NSMutableArray中,以将它们放入plist文件中。 但问题是当我真的喜欢以下内容时 a = [[NSMutableArray alloc] init]; [a addObject:msgID]; 它只保存第一个ID,不保存主题的其余部分 示
NSString*msgID;
NSMUTABLEARRY*mArray代码>
而msgID
string是每条消息的唯一ID,每次收到新消息时,它都会自行更改。
现在我想将这些ID保存到NSMutableArray中,以将它们放入plist文件中。
但问题是当我真的喜欢以下内容时
a = [[NSMutableArray alloc] init];
[a addObject:msgID];
它只保存第一个ID,不保存主题的其余部分
示例:如果输出ID为65465465151
,并且您在一秒钟后收到ID为21235445
的新消息,则NSMutableArray仅保存第一个输出
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<string>65465465151</string>
</array>
</plist>
如果您不想在循环中重复创建数组,那么代码看起来是正常的。每个addObject
都会将数组放大一倍。确保在按预期方式填充阵列后写入plist文件。确保覆盖所有旧的plist文件 如果这是您的代码,并且它都在一个块中,而不是分散在几个不同的循环中的多个方法中,那么您每次遍历代码块时都会创建一个新的mArray
实例,因此,数组中最多只有一个条目。在将第二个对象添加到数组中之前,您似乎正在创建plist。检查一下。或者你每次都在分配新的数组。我以前也看到过类似的错误。你能检查我的编辑吗?看起来你正在为收到的每封邮件重新创建数组。另外,你的路径存在一些奇怪的逻辑错误,我无法找出。你是否意识到你只给plist.plist写代码?msgIDs.plist
的作用是什么?你的if语句也很混乱,我不能理解你的代码,但是你需要将数组声明和创建移动到比代码块“更全局”的位置。(如果您不理解这一点,那么您可能不应该编写Objective-C——它不是一种非常宽容的语言。)如何暗示数组是在循环中创建的?
NSString *msgID = [viewcontroller.messageID substringFromIndex:[viewcontroller.messageID length] - 21];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"msgIDs.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSMutableArray *mArray;
if (![fileManager fileExistsAtPath:path]) {
path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat: @"msgIDs.plist"] ];
}
if ([fileManager fileExistsAtPath:path]) {
mArray = [[NSMutableArray alloc] init];
[mArray addObject:msgID];
} else {
// If the file doesn’t exist, create an empty dictionary
mArray = [[NSMutableArray alloc] init];
}
[mArray writeToFile:path atomically:YES];