2013-04-29 4 views
5

Tôi đang sử dụng máy chủ parse.com để gửi và truy xuất dữ liệu ứng dụng iOS của mình. Tôi muốn lưu danh sách bài hát và mỗi bài hát có các thuộc tính sau (tiêu đề, nghệ sĩ, album). Đoạn mã của tôi ở đây;Làm thế nào để lưu mảng các đối tượng bằng cách sử dụng máy chủ parse.com iOS?

 -(IBAction)saveSongsData:(id)sender { 

     PFObject *newPlayer = [PFObject objectWithClassName:@"Players"]; 

     /*[newPlayer addObjectsFromArray:self.songsArrray forKey:@"songs"]; 
     here i got the exception, if i uncomment it*/ 

     [newPlayer setObject:self.txtPlayerName.text forKey:@"playerName"]; 
     [newPlayer setObject:self.txtPlayerDesc.text forKey:@"playerDescription"]; 
     [newPlayer setObject:self.txtPlayerPass.text forKey:@"playerPassword"]; 

     NSString *objectId = [newPlayer objectId]; 
     [[NSUserDefaults standardUserDefaults]setObject:objectId forKey:@"id"]; 

     [newPlayer saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
      if (!error) { 
      } 
      else { 
      } 
     }]; 
     } 

Trường hợp self.songsArray là một mảng đối tượng bài hát có thuộc tính sau;

  • tiêu đề, nghệ sĩ, album.

    Nhưng khi tôi cố gắng lưu dữ liệu bài hát của mình bằng cách sử dụng dòng mã này.

    [newPlayer addObjectsFromArray:self.songsArrray forKey:@"songs"]; 
    

    tôi có một ngoại lệ và đây là thông điệp: -

    Chấm dứt ứng dụng do ngoại lệ còn tự do 'NSInvalidArgumentException', lý do: 'giá trị PFObject phải serializable để JSON'

    Xin hãy giúp tôi , cách gửi dữ liệu bài hát của tôi tới máy chủ ở định dạng JSON. Cảm ơn.

+0

Bạn không cần phải lưu mảng? [newPlayer save]; Tôi nghĩ là làm thế nào bạn làm điều đó với phân tích cú pháp. – STANGMMX

+0

Nếu tôi có ví dụ, 7 bài hát trong self.songsArray. Sau đó, làm thế nào để tuần tự hóa dữ liệu đó ở định dạng JSON và lưu dữ liệu đó bằng PFObject? HOẶC có khả năng khác không? –

+0

Bạn đã xem API REST của họ chưa? https://parse.com/docs/rest#objects-classes – STANGMMX

Trả lời

5

Khi làm việc với Parse, mảng và từ điển của bạn chỉ có thể chứa các đối tượng có thể được tuần tự hóa thành JSON. Dường như self.songsArray chứa các đối tượng không thể tự động được chuyển đổi thành JSON. Bạn có hai tùy chọn - sử dụng các đối tượng tương thích với Phân tích cú pháp hoặc, như ai đó đã đề xuất trong nhận xét, tạo các bài hát của bạn PFObjects và sau đó liên kết chúng với người chơi thông qua mối quan hệ.

+1

Tôi đang làm như thế này và làm việc tốt ngay bây giờ :) PFObject * songObject = [đối tượng PFObjectWithClassName: @ "Songs"]; [songObject setObject: songs.title forKey: @ "title"]; [songObject setObject: songs.album forKey: @ "album"]; [songObject setObject: songs.artist forKey: @ "artist"]; [lưu trữ bài hát]; Cảm ơn. –

9

Bạn có thể thử một trong các tùy chọn này:

1) Nếu bạn muốn tiết kiệm một mảng của Parse đối tượng mà bạn có thể sử dụng như sau:

[PFObject saveAllInBackground: self.songsArray block: YOUR_BLOCK]; 

2) Bạn có thể tạo mối quan hệ Parse.com:

PFObject *newPlayer ... 
PFRelation *relation = [newPlayer relationforKey:@"songs"]; 
[relation addObject:song]; // add as many songs as you want. 
[newPlayer saveInBackground]; 
0

Chỉ cần lưu đối tượngId NSString.

Sau đó, để truy xuất, hãy thực hiện một số nội dung ưa thích như thế này.

[query2 whereKey:PF_CHAT_SETID equalTo:[PFObject objectWithoutDataWithClassName:PF_SET_CLASS_NAME objectId:setId_]];