public static XibReferencedClass[] ClassesInXib(string xibPath)
        {
            var doc = XDocument.Load(new StreamReader(xibPath, Encoding.UTF8));
            var classDesc = doc.Root.Descendants().Where(x => x.Name == "object" && x.Attribute("class").Value == "IBPartialClassDescription");

            if (classDesc == null) {
                Console.WriteLine("Xib '{0}' has no class descriptions, perhaps it is post-compiled?", xibPath);
                return new XibReferencedClass[0];
            }

            Console.WriteLine("Class Count: {0}", classDesc.Count());

            var ret = classDesc.Select(root => {
                var obj = new XibReferencedClass();
                obj.Name = root.Elements().Where(x => x.Name == "string" && x.Attribute("key").Value == "className").Single().Value;
                obj.Actions = root
                   .XPathSelectElements("//object[@class='IBActionInfo']/string[@key='name']")
                   .Select(x => x.Value).ToArray();
                return obj;
            }).ToArray();

            return ret;
        }
示例#2
0
        public static XibReferencedClass[] ClassesInXib(string xibPath)
        {
            var doc       = XDocument.Load(new StreamReader(xibPath, Encoding.UTF8));
            var classDesc = doc.Root.Descendants().Where(x => x.Name == "object" && x.Attribute("class").Value == "IBPartialClassDescription");

            if (classDesc == null)
            {
                Console.WriteLine("Xib '{0}' has no class descriptions, perhaps it is post-compiled?", xibPath);
                return(new XibReferencedClass[0]);
            }

            Console.WriteLine("Class Count: {0}", classDesc.Count());

            var ret = classDesc.Select(root => {
                var obj     = new XibReferencedClass();
                obj.Name    = root.Elements().Where(x => x.Name == "string" && x.Attribute("key").Value == "className").Single().Value;
                obj.Actions = root
                              .XPathSelectElements("//object[@class='IBActionInfo']/string[@key='name']")
                              .Select(x => x.Value).ToArray();
                return(obj);
            }).ToArray();

            return(ret);
        }