解析XML文件後,我想根據xml的內容創建動態對象,如textbox
和按鈕。
我已經解析了我的xml並檢索了數據。
我爲XMLParser
創建了一個單獨的課程,並在我的vieDidload
方法中進行了調用。 是否可以調用我的mainViewController
類中的方法從我的XMLParser
類創建動態對象。Objective-C創建動態對象
0
A
回答
1
您可以創建自己的類,它將讀取解析的值並基於該類繼續創建所有GUI對象。這不是非常困難。即使你可以添加綁定,連接,約束等。 我實際上在爲我的項目創建框架時做了同樣的事情。我不能將代碼作爲版權發佈,但我可以分享一些點擊。我提到的一個基本提示。
1
呃......你可以用NSMutableDictionary來做到這一點。 或填寫您從XML
基本上只是ALLOC初始化現有的對象並設置其屬性之前建模對象:
例如:
//parse xml
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path]];
parser.delegate = (id<NSXMLParserDelegate>)self;
[parser parse];
例如公司對象
//callback from parser
- (void)didStartFirmaWithParser:(NSXMLParser*)parser andAttributes:(NSDictionary*)dict {
[[self __didStartEntity:@"RLStoreFirma" withParser:parser] didStartFirmaWithParser:parser andAttributes:dict];
}
//general callback, sets the parsers delegate to THIS new object which then gets filled
- (id)__didStartEntity:(NSString*)name withParser:(AQXMLParser*)parser {
NSEntityDescription *entity = [[store.managedObjectModel entitiesByName] objectForKey:name];
M42StoreEntry *entry = (id)[[NSManagedObject alloc] initWithEntity:entity insertIntoManagedObjectContext:store.managedObjectContext];
entry.store = self->store;
parser.delegate = entry;
return entry;
}
待填充
#import "RLStoreFirma(info).h"
@implementation RLStoreFirma (info)
- (void)didStartFirmaWithParser:(AQXMLParser*)parser andAttributes:(NSDictionary*)dict {
}
- (void)didEndFfkbWithParser:(AQXMLParser*)parser {
self.fkb = currentXMLCharacters;
}
- (void)didEndFfirWithParser:(AQXMLParser*)parser {
self.name = currentXMLCharacters;
}
- (void)didEndFirmaWithParser:(AQXMLParser*)parser {
if(!self.name) {
self.name = self.fkb;
}
[self didEndMainWithParser:(AQXMLParser*)parser];
}
產生在運行時心不是允許的iPhone SDK新對象的對象/其objc運行時
#pragma mark parser magic
- (SEL) __startSelectorForElement: (NSString *) element
{
NSString * str = nil;
NSMutableString * eSel = [NSMutableString stringWithString: [[element substringWithRange: NSMakeRange(0,1)] uppercaseString]];
if ([element length] > 1)
{
[eSel appendString: [element substringFromIndex: 1]];
NSRange range = [eSel rangeOfString: @"-"];
for (; range.location != NSNotFound; range = [eSel rangeOfString: @"-"])
{
NSString * cap = [[eSel substringWithRange: NSMakeRange(range.location+1, 1)] uppercaseString];
range.length += 1;
[eSel replaceCharactersInRange: range withString: cap];
}
}
str = [NSString stringWithFormat: @"didStart%@WithParser:andAttributes:", eSel];
return (NSSelectorFromString(str));
}
語法糖,使NSParser更好..我不能給你所有的代碼,但我墨水這可能有所幫助 - 我希望
+0
謝謝老兄.... –
相關問題
- 1. Swift:動態對象創建
- 2. 動態創建JS對象
- 3. 動態創建Javascript對象
- 4. 動態創建UIView對象
- 5. 動態創建對象
- 6. 動態創建MVC對象
- 7. 動態Javascript對象創建
- 8. 創建動態對象(Eiffel)
- 9. 動態創建對象
- 10. 動態對象創建
- 11. 動態創建JavaScript對象?
- 12. 動態創建JSON對象
- 13. 動態創建C#對象
- 14. 動態創建對象java
- 15. 創建JavaScript對象動態
- 16. 創建動態JavaScript對象
- 17. 動態對象創建
- 18. Unity創建動態對象
- 19. 創建動態對象python
- 20. 從動態對象創建對象
- 21. 從對象動態創建Xml
- 22. 在C++中動態創建對象?
- 23. 在groovy中動態創建json對象
- 24. 旋轉AS3動態創建的對象
- 25. C#動態對象創建/修改?
- 26. 刪除動態創建的對象
- 27. 動態更新/創建對象屬性
- 28. 如何動態創建聲音對象
- 29. 動態對象創建和const_set
- 30. 如何動態創建對象?
感謝您的信息 –