Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone Plist至NSDictionary显示黑屏_Iphone_Xml_Serialization_Plist - Fatal编程技术网

iPhone Plist至NSDictionary显示黑屏

iPhone Plist至NSDictionary显示黑屏,iphone,xml,serialization,plist,Iphone,Xml,Serialization,Plist,我正在开发一个iphone应用程序,我的目的是从web服务器检索plist,并在tableview中显示结果 我在尝试反序列化plist时遇到了一个问题。下面的代码经过编译,但在运行时iphone模拟器屏幕保持黑色,在我看来,视图从未加载,NSLog消息也没有显示在控制台中。另一方面,如果我调试了控制台中的消息,但没有显示视图,屏幕将保持黑色: - (void)viewDidLoad { NSData *data = [@"<?xml version=\"1.0\" encoding=

我正在开发一个iphone应用程序,我的目的是从web服务器检索plist,并在tableview中显示结果

我在尝试反序列化plist时遇到了一个问题。下面的代码经过编译,但在运行时iphone模拟器屏幕保持黑色,在我看来,视图从未加载,NSLog消息也没有显示在控制台中。另一方面,如果我调试了控制台中的消息,但没有显示视图,屏幕将保持黑色:

- (void)viewDidLoad {


NSData *data = [@"<?xml version=\"1.0\" encoding=\"UTF-8\"?> <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"><plist version=\"1.0\"><dict><key>count</key><array><integer>5</integer></array><key>username</key><array><string>johnsmith</string></array></dict></plist>" dataUsingEncoding:NSUTF8StringEncoding];


NSString *error = nil;

NSPropertyListFormat *format;

NSMutableDictionary *plist = [NSPropertyListSerialization propertyListFromData:data 
                                 mutabilityOption:0 
                                        format: format
                                 errorDescription:&error];



if (!plist) {  
    NSLog(@"Error reading plist from file, error = '%s'", [error UTF8String]);  
    [error release];  
}  else {

    NSLog(@"Groovy");
    NSLog(@"Count: %d",[plist count]);
    NSLog(@"Username %@", [plist objectForKey:@"username"]);
    NSLog(@"Count %@", [plist objectForKey:@"count"]);
    //[plist retain];

}


//[plist dealloc];


[super viewDidLoad];
}
-(void)viewDidLoad{
NSData*数据=[@“count5usernamejohnsmith”数据使用编码:NSUTF8StringEncoding];
NSString*错误=nil;
NSPropertyListFormat*格式;
NSMutableDictionary*plist=[NSPropertyListSerialization propertyListFromData:data
可变选项:0
格式:格式
错误描述:&错误];
如果(!plist){
NSLog(@“从文件读取plist时出错,错误='%s',[Error UTF8String]);
[错误释放];
}否则{
NSLog(@“Groovy”);
NSLog(@“计数:%d”,[plist计数]);
NSLog(@“Username%@,[plist objectForKey:@“Username”]);
NSLog(@“Count%@,[plist objectForKey:@“Count]”);
//[plist-retain];
}
//[plist dealoc];
[超级视图下载];
}
我一直在研究,他们说NSPropertyListSerialization泄漏内存,我不确定这是否是我的情况。如果您想尝试这段代码,我刚刚创建了一个基于iphone视图的应用程序,并将代码粘贴到(void)viewDidLoad方法中


任何帮助都将不胜感激。

更改您的代码如下:

NSPropertyListFormat format;

NSMutableDictionary *plist = [NSPropertyListSerialization propertyListFromData:data 
                                                              mutabilityOption:0 
                                                                        format:&format
                                                              errorDescription:&error];
即,删除第一个
格式前面的
*
,并在第二个
格式前面添加一个
&

NSPropertyListFormat
不是对象,而是枚举,
propertyListFromData:mutabilityOption:format:errorDescription:
需要指向
NSPropertyListFormat
实例的指针


您正在传递一个未初始化的指针,该方法试图写入此“随机”地址。这导致了一场车祸

也许我遗漏了什么,但你没有对反序列化的PLIST做任何事情。此外,代码是
ui视图的一部分吗?如果是,您是否实现了
drawRect:
方法或添加了子视图?