2016-04-04 30 views
0

請考慮下面的代碼:無法寫入定製的.plist

- (IBAction)testButton:(id)sender{ 
     //create BFF with random id 
     BFF * testBff = [[BFF alloc]init]; 
     [email protected]"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居住在我的文件夾。

-The路徑似乎要被罰款

-The變量檢查表明,「數據」 NSDictionary包含不知怎麼的,但是,沒有數據被寫入到文件類型NSMutableData

的價值的關鍵。

如果我改變

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

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

文件被寫入。顯然,我的編碼嘗試失敗了?

我在這裏做錯了什麼?

+0

好的我考慮過了。這個語句是什麼if(![fileManager fileExistsAtPath:path]){path =(與前一個值相同); }'實現? – trojanfoe

+0

哦,那只是一些樣板代碼。看到我更新的問題:寫入文件工作正常,但似乎該文件的結構不被接受。我將簡化我的問題以放大真正的問題。 – Sjakelien

+0

如何獲取一些錯誤信息? – trojanfoe

回答

0

我解決了它如下: 顯然,罪魁禍首被設置在這條線上的關鍵在於:

[數據的setObject:encodedBFF forKey:testBff.id];

我改爲

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