2011-11-22 11 views
5

Tôi đang cố gắng đưa yêu cầu HTTP POST của mình bằng một khóa. Nói cách khác, tôi muốn tắt chức năng này:Mục tiêu C + Reskit - Làm cách nào để bọc từ điển của tôi bằng khóa để tránh các vấn đề về định dạng?

{ 
"category_id"=>"1", 
"food_name_token"=>"Pizza", 
"id"=>"1" 
} 

vào đây:

{ 
"dish" => 
    { 
    "category_id"=>"1", 
    "food_name_token"=>"Pizza", 
    "id"=>"1" 
    } 
} 

tôi đã cố gắng sử dụng phương pháp 'rootKeyPath' trong RestKit:

serializationMapping.rootKeyPath = @"dish";  

Nhưng điều đó đã cho tôi này chuỗi được định dạng kỳ lạ:

{ 
"dish"=> 
    "{ 
    \n \"category_id\" = 1; 
    \n \"food_name_token\" = Pizza; 
    \n id = 1; 
    \n} 
"} 

Nó sử dụng dấu bằng và dấu chấm phẩy bằng dấu phẩy và dấu phẩy, và thêm vào tất cả các dấu ngắt dòng này và thoát khỏi dấu gạch chéo ngược.

Bất kỳ ý tưởng nào tại sao? Và bất kỳ đề xuất về những gì tôi có thể làm thay vào đó?

P.S. Tôi đang sử dụng phụ trợ của Rails

+0

http://stackoverflow.com/questions/7521683/nsdictionary-description-formatting-problem-treats-structure-like-char-data – SVD

Trả lời

2

tôi phát hiện ra với Restkit Tôi có thể bọc các thuộc tính sử dụng dấu ngoặc:

[dishMapping mayKeyPath:@"dish[food_name_token]" toAttribute:@"placeToken"]; 

Và điều này mang lại cho tôi một đầu ra bình thường mà không có định dạng lạ.

+0

Phản hồi này là một cuộc sống tiết kiệm. Cảm ơn bạn! – Schrockwell

2
NSDictionary *rootDictionary = [NSDictionary dictionaryWithObject:childDict forKey:@"dish"]; 

Điều này sẽ giải quyết được.

+0

và cách Jonathan nhận ChildDict? –

+0

Tôi cho rằng bạn đã vắng mặt kể từ khi bạn đăng nhập. –

+0

Câu trả lời của bạn khiến tôi nhận ra rằng vấn đề không nằm trong phương thức 'rootKeyPath' của RestKit, bởi vì tôi đã thử giải pháp của bạn và nó tạo ra kết quả tương tự. Thay vào đó, vấn đề nằm trong cách Objective C serializes đối tượng Dictionary của tôi. Ngay cả khi nó được bọc theo cách thích hợp, nó vẫn mang lại cho tôi những chuỗi thoát hiểm thêm khiến cho máy chủ khó phân tích cú pháp. Nó không trả lời đầy đủ câu hỏi của tôi, nhưng nó trả lời câu hỏi tôi đặt ra làm tiêu đề của tôi (mặc dù tôi nhận ra đó là câu hỏi sai để hỏi, vì vậy tôi có lẽ nên thay đổi nó). Vì vậy, tôi sẽ chỉ cung cấp cho bạn một cuộc bỏ phiếu. –

0

Thêm các mục vào một NSArray, và sau đó thêm mảng vào NSDictionary, như thế này:

NSDictionary *item = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray arrayWithObject:results], @"Parent",nil]; 
NSLog(@"NSDicitonary %@",item); 
NSLog(@"Child values %@",[item valueForKey:@"Parent"]); 
+0

Tôi đã thử giải pháp của bạn, nhưng nó mang lại kết quả tương tự cho tôi .. –

+0

Tôi đọc về việc sử dụng mảng cũng từ liên kết này: http://stackoverflow.com/questions/7521683/nsdictionary-description-formatting-problem-treats- cấu trúc-như-char-data Nhưng tôi không hiểu làm thế nào để thực hiện nó theo cách của mình. –

Các vấn đề liên quan