Iphone 如何使用nsarray初始化nsmutablearray
我试图用Iphone 如何使用nsarray初始化nsmutablearray,iphone,ios,nsmutablearray,nsarray,foundation,Iphone,Ios,Nsmutablearray,Nsarray,Foundation,我试图用NSArray的值初始化NSMutableArray,但当我NSLog时,新创建的NSMutableArray得到的只是(null),(null)。。。等 我不知道为什么这件事会让人非常沮丧 我在标题中设置了myMutableArray,@synthesis等 然后在parserdidend委托中,这就是我试图做的 - (void)parserDidEndDocument:(NSXMLParser *)parser { if (dataSetToParse == @"ggf"){
NSArray
的值初始化NSMutableArray
,但当我NSLog
时,新创建的NSMutableArray
得到的只是(null
),(null
)。。。等
我不知道为什么这件事会让人非常沮丧
我在标题中设置了myMutableArray
,@synthesis
等
然后在parserdidend委托中,这就是我试图做的
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
if (dataSetToParse == @"ggf"){
//Filter results (ISTOY = T)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@",@"ISTOY",@"T"];
NSArray *filteredArray = [parsedDataArrayOfDictionaries filteredArrayUsingPredicate:predicate];
NSLog(@"%@", filteredArray); //This prints correct details
[myMutableArray setArray:filteredArray];
NSLog(@"%@", myMutableArray); //This prints (null), (null)... etc
//Use myMutableArray later...
}
我想myMutableArray是零 此外,您还可以执行以下操作:
myMutableArray = [ [ filteredArray mutableCopy ] autorelease ] ;
(如果在ARC下,不要添加自动释放)如nielsbot所说,或者:
myMutableArray = [NSMutableArray arrayWithArray: filteredArray];
如果您需要担心的话,这已经返回了一个自动释放的实例。另外,如果
parsedDataArrayOfDictionaries
和myMutableArray
是支持属性的成员变量,我认为最好使用属性访问器,即self.myMutableArray
。。为什么您认为我尝试的另一种方法不起作用???当您编写@property(…)NSMutableArray*myMutableArray
时,您的“意思”是“此变量可以包含对NSMutableArray的引用”,但您仍然需要为属性分配一个NSMutableArray引用,使其包含一个NSMutableArray引用。有意义吗?在这里的评论中解释可能很复杂@property
声明属性的接口,即“这个类的实例有一个名为x的属性”,但它实际上没有说明该属性是如何实现的。添加@synthesis
会为属性创建一个getter/setter实现,并且还声明getter/setter存储区属性的值存储在某个成员变量中。因此,当您编写myMutableArray
而不是self.myMutableArray
时,您将直接转到存储属性值的成员变量myMutableArray
,而不是调用属性的getter和塞特