无法写入自定义.plist

时间:2016-04-04 08:20:46

标签: objective-c plist

请考虑以下代码:

- (IBAction)testButton:(id)sender{
        //create BFF with random id
        BFF * testBff = [[BFF alloc]init];
        testBff.relationType=@"BFF";
        testBff.id= [NSNumber numberWithInt:(arc4random() % 100)];
        testBff.handshake=[NSDate date];

        //Encode the object 
        //Since a .plist doesn't take custom objects, I convert my object into type NSData*

        NSData *encodedBFF = [NSKeyedArchiver archivedDataWithRootObject:testBff];

        //Insert the data into the plist and save
        NSString *path = [documentsDirectory stringByAppendingPathComponent:@"myBFFS.plist"];

        [data setObject: encodedBFF forKey:testBff.id];
        [data writeToFile:path atomically:YES];
  }

我希望每次点击连接到此方法的按钮时,都会在myBFFs.plist中添加一个新对象,驻留在我的文档文件夹中。

- 路径似乎很好

- 变量检查器指示'数据'NSDictionary包含值为NSMutableData的键

然而,不知何故,没有任何内容写入文件。

如果我改变

 [data setObject: encodedBFF forKey:testBff.id];

 [data setObject: @"foo" forKey:@"bar"];

写入文件。显然,我的编码尝试失败了?

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我解决了如下: 显然,罪魁祸首是在这条线上设置关键:

  

[data setObject:encodedBFF forKey:testBff.id];

我改为

  

[myPlist setObject:encodedBFF forKey:[testBff.id stringValue]];