NSMutableArray addObjects NSString

时间:2014-07-28 21:03:15

标签: objective-c nsstring nsmutablearray

我遇到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];

2 个答案:

答案 0 :(得分:0)

如果这是你的代码,并且它都在一个块中,而不是分散在几个方法中,在几个不同的循环中,那么每次通过代码块时都会创建一个mArray的新实例,因此,阵列中最多只有一个条目。

答案 1 :(得分:-1)

如果您没有尝试重复循环创建数组,那么您的代码看起来没问题。每个addObject会将数组放大一个。确保在按预期方式填充数组后编写plist文件。确保覆盖任何旧的plist文件。