2011-03-23 66 views
0

我從Web服務器接收json文件。我正在使用JSON文件解析(到數組和字典中)並使用收到的信息。但是在某個時候,我試圖保存一本字典並且沒有寫入該文件。該字典將具有以下格式:iphone - 將NSDictionary寫入文件的問題

{ 
    author = "<null>"; 
    category =  { 
     "created_at" = "2011-02-06T18:11:39Z"; 
     id = 1; 
     name = animals; 
    }; 
    "created_at" = "<null>"; 
    id = 16; 
    "mobile_user_id" = "<null>"; 
    "rating_count" = "4.33333333333333"; 
    status = 1; 
    text = "A boy at a cinema notices what looks like a bear sitting next to him \"Are you a bear? \"\"Yes \"\"What are you doing at the movies? \"\"Well, I liked the book! \""; 
    title = "Various animal jokes"; 
} 

我用下面的代碼保存:

-(BOOL)savePlistFiles:(int)fileNumber 
{ 
    BOOL success = NO; 
    switch (fileNumber) { 
     case SAVE_FAVORITES_JOKES: 
      success = [self.favoriteJokes writeToFile:self.favSaveFilePath atomically:YES]; 
      break; 
     case SAVE_RATED_JOKES: 
      success = [self.ratedJokes writeToFile:self.ratingSaveFilePath atomically:YES]; 
      break; 
     default: 
      NSLog(@"Improper file to save"); 
      success = NO; 
      break; 
    } 
    return success; 
} 
-(BOOL)addJokeToFavorite:(NSDictionary*)joke 
{ 
    NSLog(@"Joke: %@",joke); 
    BOOL success = NO; 
    [self.favoriteJokes addObject:joke]; 
    for(NSDictionary* dict in self.favoriteJokes) 
     NSLog(@"%@", dict); 
    success = [self savePlistFiles:SAVE_FAVORITES_JOKES]; 
    return success; 
} 

我打電話addJokeToFavorite用字典。在addJokeToFavorite方法中,self.favoriteJokes是一個屬性,它也被保留。 savePlistFiles方法總是返回成功=否。我無法指出它爲什麼不寫入文件的原因。 我也嘗試創建文件,然後寫入。它也沒有工作。 我也嘗試刪除其值仍然沒有輸出的鍵。

我使用下面的代碼來創建plist文件:

NSFileManager* fm = [NSFileManager defaultManager]; 
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString* documentsDirectory = [paths objectAtIndex:0]; 
self.favSaveFilePath = [documentsDirectory stringByAppendingPathComponent:@"Favorites.plist"]; 
+0

看起來你實際上正在寫一個NSArray到plist文件。你如何初始化self.favoriteJokes? – Felix 2011-03-23 12:07:28

+0

我創建了屬性@property(nonatomic,retain)NSMutableArray * favoriteJokes;然後添加@synthesize favoriteJokes;在實現中,並在viewDidLoad中,我使用self.favoriteJokes = [NSMutableArray數組]; – Satyam 2011-03-23 13:02:42

回答

0

你應該檢查self.favSaveFilePath和self.ratingSaveFilePath。

你能給我更多的信息嗎?

+0

我也檢查過。該文件正在創建。我在viewDidLoad本身中創建文件。我更新了我的描述中關於如何創建plist文件的代碼。 – Satyam 2011-03-23 09:20:10