2014-10-13 4 views
0

Я использую RubyMotion и пытаюсь сериализовать объект json. Я не получаю сообщение об ошибке, но это приводит к сбою моего приложения.Использование NSJSONSerialization в RubyMotion

class Foo 
    attr_accessor :name 
    end 

    e = Pointer.new(:object) 

    testItem = Foo.new    
    testItem.name = "test"   

    testJson = NSJSONSerialization.dataWithJSONObject(testItem, options:0, error: e) 

Может ли кто-нибудь увидеть, правильно ли я использовал этот класс? (или знаете альтернативу)

+0

Где 'é' определено? –

+0

Спасибо, я пропустил строку в вопросе. Обновлено – MikeW

ответ

1

Нет ничего плохого в вашем обращении. Проблема связана с вашими данными. Объект верхнего уровня в вашем testItem должен быть NSArray или NSDictionary.

Вы можете использовать массивы RubyMotion и хеши с Array < NSMutableArray < NSArray и Hash < NSMutableDictionary < NSDictionary.

Попробуйте эти примеры testItems с Вашего звонка:

testItem = ["test"] 
testItem = {"names" => ["Fred", "Joe", "Mike"], "ages" => [17, 63, 28]} 

От NSJSONSerialization.h:

/* A class for converting JSON to Foundation objects and converting Foundation objects to JSON. 

    An object that may be converted to JSON must have the following properties: 
    - Top level object is an NSArray or NSDictionary 
    - All objects are NSString, NSNumber, NSArray, NSDictionary, or NSNull 
    - All dictionary keys are NSStrings 
    - NSNumbers are not NaN or infinity 
*/ 
+0

Cheers, спасибо за освобождение, что – MikeW

+0

Добро пожаловать. Я должен был сделать немного исследования, чтобы ответить на этот вопрос. Я был бы рад, если бы вы так наклонены. – vacawama