如何在Swift中访问嵌套对象?

时间:2014-12-16 16:44:59

标签: oop swift realm

以下是println(newArticle)

的读数

我可以使用newArticle.paragraphs [0]访问段落。如何访问句子[0]? (或者甚至是我应该尝试访问的内容?)

我试过newArticle.paragraphs [0] .sentences [0],但是我收到一条错误,说'AnyObject'没有名为'sentences'的成员。

Article {
    title = test;
    viewed = 0;
    paragraphs = RLMArray <0x7c986ec0> (
    [0] Paragraph {
        sentences = RLMArray <0x7c999da0> (

    );
        paragraphContent = 1最初,上帝创造了天地。
    ;
        article = Article {
        title = test;
        viewed = 0;
        paragraphs = RLMArray <0x7c9b4af0> (
        [0] <Maximum depth exceeded>,
        [1] <Maximum depth exceeded>,
        [2] <Maximum depth exceeded>,
        [3] <Maximum depth exceeded>
    );
        articleContent = 1最初,上帝创造了天地。
    2大地混沌苍茫,深渊的表面一片黑暗。上帝发出的动力运行在水面上。
    3上帝说:“要有光。”光就出现了。4上帝看光是好的。上帝把光暗分开了。5上帝称光为“昼”,称暗为“夜”。过了晚上,到了早晨,是第一日。;
        dateAdded = 2014-12-16 15:12:29 +0000;
    };
    },
    [1] Paragraph {
        sentences = RLMArray <0x7c9b7dc0> (

    );
        paragraphContent = 2大地混沌苍茫,深渊的表面一片黑暗。上帝发出的动力运行在水面上。
    ;
        article = Article {
        title = test;
        viewed = 0;
        paragraphs = RLMArray <0x7c9b6720> (
        [0] <Maximum depth exceeded>,
        [1] <Maximum depth exceeded>,
        [2] <Maximum depth exceeded>,
        [3] <Maximum depth exceeded>
    );
        articleContent = 1最初,上帝创造了天地。
    2大地混沌苍茫,深渊的表面一片黑暗。上帝发出的动力运行在水面上。
    3上帝说:“要有光。”光就出现了。4上帝看光是好的。上帝把光暗分开了。5上帝称光为“昼”,称暗为“夜”。过了晚上,到了早晨,是第一日。;
        dateAdded = 2014-12-16 15:12:29 +0000;
    };
    },
    [2] Paragraph {
        sentences = RLMArray <0x7c9b6880> (

    );
        paragraphContent = 3上帝说:“要有光。”光就出现了。4上帝看光是好的。上帝把光暗分开了。5上帝称光为“昼”,称暗为“夜”。过了晚上,到了早晨,是第一日。;
        article = Article {
        title = test;
        viewed = 0;
        paragraphs = RLMArray <0x7c9b66c0> (
        [0] <Maximum depth exceeded>,
        [1] <Maximum depth exceeded>,
        [2] <Maximum depth exceeded>,
        [3] <Maximum depth exceeded>
    );
        articleContent = 1最初,上帝创造了天地。
    2大地混沌苍茫,深渊的表面一片黑暗。上帝发出的动力运行在水面上。
    3上帝说:“要有光。”光就出现了。4上帝看光是好的。上帝把光暗分开了。5上帝称光为“昼”,称暗为“夜”。过了晚上,到了早晨,是第一日。;
        dateAdded = 2014-12-16 15:12:29 +0000;
    };
    },
    [3] Paragraph {
        sentences = RLMArray <0x7c9b6820> (

    );
        paragraphContent = ;
        article = Article {
        title = test;
        viewed = 0;
        paragraphs = RLMArray <0x7c9b9650> (
        [0] <Maximum depth exceeded>,
        [1] <Maximum depth exceeded>,
        [2] <Maximum depth exceeded>,
        [3] <Maximum depth exceeded>
    );
        articleContent = 1最初,上帝创造了天地。
    2大地混沌苍茫,深渊的表面一片黑暗。上帝发出的动力运行在水面上。
    3上帝说:“要有光。”光就出现了。4上帝看光是好的。上帝把光暗分开了。5上帝称光为“昼”,称暗为“夜”。过了晚上,到了早晨,是第一日。;
        dateAdded = 2014-12-16 15:12:29 +0000;
    };
    }
);
    articleContent = 1最初,上帝创造了天地。
2大地混沌苍茫,深渊的表面一片黑暗。上帝发出的动力运行在水面上。
3上帝说:“要有光。”光就出现了。4上帝看光是好的。上帝把光暗分开了。5上帝称光为“昼”,称暗为“夜”。过了晚上,到了早晨,是第一日。;
    dateAdded = 2014-12-16 15:12:29 +0000;
}

这是我在println时看到的内容(newArticle.paragraphs [0] .description)

Paragraph {
    sentences = RLMArray <0x78f7b920> (

);
    paragraphContent = 1最初,上帝创造了天地。
;
    article = Article {
    title = test;
    viewed = 0;
    paragraphs = RLMArray <0x78f7b570> (
    [0] Paragraph {
        sentences = RLMArray <0x78f7bdf0> (

    );
        paragraphContent = 1最初,上帝创造了天地。
    ;
        article = Article {
        title = test;
        viewed = 0;
        paragraphs = <Maximum depth exceeded>;
        articleContent = 1最初,上帝创造了天地。
    2大地混沌苍茫,深渊的表面一片黑暗。上帝发出的动力运行在水面上。
    3上帝说:“要有光。”光就出现了。4上帝看光是好的。上帝把光暗分开了。5上帝称光为“昼”,称暗为“夜”。过了晚上,到了早晨,是第一日。;
        dateAdded = 2014-12-16 15:12:29 +0000;
    };
    },
    [1] Paragraph {
        sentences = RLMArray <0x78f7c720> (

    );
        paragraphContent = 2大地混沌苍茫,深渊的表面一片黑暗。上帝发出的动力运行在水面上。
    ;
        article = Article {
        title = test;
        viewed = 0;
        paragraphs = <Maximum depth exceeded>;
        articleContent = 1最初,上帝创造了天地。
    2大地混沌苍茫,深渊的表面一片黑暗。上帝发出的动力运行在水面上。
    3上帝说:“要有光。”光就出现了。4上帝看光是好的。上帝把光暗分开了。5上帝称光为“昼”,称暗为“夜”。过了晚上,到了早晨,是第一日。;
        dateAdded = 2014-12-16 15:12:29 +0000;
    };
    },
    [2] Paragraph {
        sentences = RLMArray <0x78f7c1f0> (

    );
        paragraphContent = 3上帝说:“要有光。”光就出现了。4上帝看光是好的。上帝把光暗分开了。5上帝称光为“昼”,称暗为“夜”。过了晚上,到了早晨,是第一日。;
        article = Article {
        title = test;
        viewed = 0;
        paragraphs = <Maximum depth exceeded>;
        articleContent = 1最初,上帝创造了天地。
    2大地混沌苍茫,深渊的表面一片黑暗。上帝发出的动力运行在水面上。
    3上帝说:“要有光。”光就出现了。4上帝看光是好的。上帝把光暗分开了。5上帝称光为“昼”,称暗为“夜”。过了晚上,到了早晨,是第一日。;
        dateAdded = 2014-12-16 15:12:29 +0000;
    };
    },
    [3] Paragraph {
        sentences = RLMArray <0x78f7f240> (

    );
        paragraphContent = ;
        article = Article {
        title = test;
        viewed = 0;
        paragraphs = <Maximum depth exceeded>;
        articleContent = 1最初,上帝创造了天地。
    2大地混沌苍茫,深渊的表面一片黑暗。上帝发出的动力运行在水面上。
    3上帝说:“要有光。”光就出现了。4上帝看光是好的。上帝把光暗分开了。5上帝称光为“昼”,称暗为“夜”。过了晚上,到了早晨,是第一日。;
        dateAdded = 2014-12-16 15:12:29 +0000;
    };
    }
);
    articleContent = 1最初,上帝创造了天地。
2大地混沌苍茫,深渊的表面一片黑暗。上帝发出的动力运行在水面上。
3上帝说:“要有光。”光就出现了。4上帝看光是好的。上帝把光暗分开了。5上帝称光为“昼”,称暗为“夜”。过了晚上,到了早晨,是第一日。;
    dateAdded = 2014-12-16 15:12:29 +0000;
};
}

1 个答案:

答案 0 :(得分:2)

您需要将从段落中拉出的对象转换为段落。 Swift只知道对象是AnyObject而且AnyObject没有&#34;句子&#34;财产,所以它抱怨。

类似

let paragraph = newArticle.paragraphs[0] as Paragraph
println(paragraph.sentences[0])

或者,为了更安全,

if let paragraph = newArticle.paragraphs[0] as? Paragraph {
    println(paragraph.sentences[0])
}