我遇到NSString和NSMutableArray
的问题我有:
NSString *msgID;
NSMutableArray *mArray;
和msgID
字符串是每条消息的唯一ID,每次收到新消息时它都会自行更改。
现在我想将这些IDS保存到NSMutableArray中,将它们放在plist文件中。
但问题是当我喜欢以下
时a = [[NSMutableArray alloc] init];
[a addObject:msgID];
它只保存第一个ID而不是其余的主题
示例如果输出ID为65465465151
并且您在ID为2123545445
一秒后收到新消息,则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>
如何让NSMutableArray
添加已使用NSString
输出的所有输出或字符串?
这是我的代码
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];
答案 0 :(得分:0)
如果这是你的代码,并且它都在一个块中,而不是分散在几个方法中,在几个不同的循环中,那么每次通过代码块时都会创建一个mArray
的新实例,因此,阵列中最多只有一个条目。
答案 1 :(得分:-1)
如果您没有尝试重复循环创建数组,那么您的代码看起来没问题。每个addObject
会将数组放大一个。确保在按预期方式填充数组后编写plist文件。确保覆盖任何旧的plist文件。