我想上一个答案,这里建议从plist中得到一个数组,但它不工作。谁能告诉我,我错过了什么?

下面是plist中的样子....另一个奇怪的是,我不能让这个以纯文本文件打开?当我做它看起来像垃圾.....但它在属性列表编辑器看起来不错:

<?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>

下面是我正在使用的代码.....词典是的NSMutableDictionary和accountsArray是NSMustableArray是在h文件。

     NSMutableDictionary *tempDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:accountsFilePath];

 dictionary = tempDictionary;
 [tempDictionary release];


 NSMutableArray *nameArray = [[NSMutableArray alloc] init];
 nameArray = [dictionary objectForKey:@"username"];

 accountsArray = nameArray;

 [nameArray release];

我缺少的东西?拧东西了?

...谢谢

有帮助吗?

解决方案 2

我终于得到它的工作是这样的:

    dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:accountsFilePath];      


 if (accountsArray == nil){

     accountsArray = [[NSMutableArray alloc]init];
 }

 if (countArray == nil){

     countArray = [[NSMutableArray alloc]init];
 }



 countArray = [dictionary objectForKey:@"count"];
 accountsArray = [dictionary objectForKey:@"username"];

其他提示

那么,有许多在进行中的问题;首先所有的plist的可能是一个二进制的属性列表,而不是实际的XML属性列表。这没有多大意义的对事物的代码方面,而是应该成为与开放作为纯文本解释的问题。

其次,通过释放tempDictionary时,也会释放dictionary,因为它们都指向同一个对象。这应该有助于解释为什么你的代码不能正常工作。尝试autorelease,或者干脆产品总数dictionaryWithContentsOfFile:和尼克斯释放短语。 (dictionaryWithContentsOfFile:将自动释放它的返回值。)

您还重复第二句话释放的错误;赋值运算符(=)在Objective-C不复制;它受让人

编辑:使用属性符号时,后者是不正确的;假设属性定义; self.accountsArray = nameArray将(可能)阵列复制到该对象。

重新编辑:正确的代码:

dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:accountsFilePath];
accountsArray = [dictionary objectForKey:@"username"];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top