Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.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 可变阵列的iOS 5 sdk问题_Iphone_Objective C_Ios_Ios5_Xcode4.2 - Fatal编程技术网

Iphone 可变阵列的iOS 5 sdk问题

Iphone 可变阵列的iOS 5 sdk问题,iphone,objective-c,ios,ios5,xcode4.2,Iphone,Objective C,Ios,Ios5,Xcode4.2,您好,我在iOS 4.3.3上创建了一个应用程序,然后下载了Xcode 4.2.1和iOS sdk 5。这是一个基于导航的应用程序,它为tableview提供了一个可变数组,但它不会为数组创建任何字符串,因此我在viewdidload中向数组添加了一个对象,但它不起作用!所以我在数组中的对象中添加了NSlog,它显示为null!我该怎么办 以下是viewdidload: - (void)viewDidLoad { [super viewDidLoad]; self

您好,我在iOS 4.3.3上创建了一个应用程序,然后下载了Xcode 4.2.1和iOS sdk 5。这是一个基于导航的应用程序,它为tableview提供了一个可变数组,但它不会为数组创建任何字符串,因此我在viewdidload中向数组添加了一个对象,但它不起作用!所以我在数组中的对象中添加了NSlog,它显示为null!我该怎么办

以下是viewdidload:

    - (void)viewDidLoad
    {
    [super viewDidLoad];
    self.soldc = [NSMutableArray arrayWithCapacity:0];
    self.color = [NSMutableArray arrayWithCapacity:0];
    appdelegate = (yard_sale_managerAppDelegate *)[[UIApplication sharedApplication]          delegate];
    appdelegate.object = self;
    NSMutableArray *loadi = [[NSMutableArray alloc]initWithCapacity:0];
    self.items = loadi;
    self.sold = [NSMutableArray arrayWithCapacity:0];
    self.prices = [NSMutableArray arrayWithCapacity:0];

    alert = [[UIAlertView alloc] initWithTitle:@"Add product" message:@"Enter your   product name and price." delegate:self cancelButtonTitle:@"Add" otherButtonTitles:@"Cancel",   nil];
    [alert addTextFieldWithValue:@"" label:@"name"];
    [alert addTextFieldWithValue:@"" label:@"price"];
    add = [alert textFieldAtIndex:0];
    add.keyboardType = UIKeyboardTypeAlphabet;
    add.keyboardAppearance = UIKeyboardAppearanceAlert;
    add.autocapitalizationType = UITextAutocapitalizationTypeWords;
    add.autocorrectionType = UITextAutocorrectionTypeNo;
    add2 = [alert textFieldAtIndex:1];
    add2.keyboardType = UIKeyboardTypeNumberPad;
    add2.keyboardAppearance = UIKeyboardAppearanceAlert;
    add2.autocapitalizationType = UITextAutocapitalizationTypeWords;
    add2.autocorrectionType = UITextAutocorrectionTypeNo;
    NSLog(@"%i", [color count]);
    alert.tag=1;
    self.resa = [[UIAlertView alloc] initWithTitle:@"Sale results" message:@"temple" delegate:self cancelButtonTitle:@"Close" otherButtonTitles: nil];
    self.items = [NSMutableArray arrayWithContentsOfFile:[self itemsp]];
    self.prices = [NSMutableArray arrayWithContentsOfFile:[self pricesp]];
    self.sold = [NSMutableArray arrayWithContentsOfFile:[self soldp]];
    self.soldc = [NSMutableArray arrayWithContentsOfFile:[self soldcp]];
    self.color = [NSMutableArray arrayWithContentsOfFile:[self colorsp]];
    if ([self.soldc count]==0) {

    }
    //self.soldc = [NSMutableArray arrayWithContentsOfFile:[self soldcp]];
    self.color = [NSMutableArray arrayWithContentsOfFile:[self colorsp]];
    [loadi release];
    self.resa.tag = 2;
    [self.items addObject:@"chair"];   
    [self.prices addObject:@"30"];
    [self.color addObject:@"0"];
    NSLog(@"%@",self.items);
}
如果你需要更多的信息,告诉我! 这是日志:

2012-01-08 21:31:13.409 yard sale manager[1152:f803] 0
2012-01-08 21:31:13.411 yard sale manager[1152:f803] (null)
编辑:读这篇文章很重要!!!!! 很多人没有注意到这段代码: [self.items addObject:@“chair”]
[self.pricesaddobject:@“30”]; [self.color addObject:@“0”]; NSLog(@“%@”,自我项目)

这条线

self.color = [NSMutableArray arrayWithCapacity:0];
self.items = [NSMutableArray arrayWithContentsOfFile:[self itemsp]];
实例化并分配一个空数组,然后不向其中添加任何内容,因此
0
计数

那么这条线

self.items = [NSMutableArray arrayWithContentsOfFile:[self itemsp]];
这可能是原因。
[self itemsp]
是否返回指向可解析为
NSArray
的文件的有效文件路径

这段代码还有很多其他问题


更新

这条线

self.color = [NSMutableArray arrayWithCapacity:0];
self.items = [NSMutableArray arrayWithContentsOfFile:[self itemsp]];
必须返回
nil

通过在其后面直接添加此行进行确认

NSLog(@"%@", self.items);
我如何做出这个假设

我之所以做出这个假设,是因为您得到了
(null)
。当您在
nil
上调用
addObject:
时,您将得到返回的
nil
,这是一个禁止操作的命令。正如您从这个代码段中所看到的

NSMutableArray *myArray = nil;

[myArray addObject:@"Test"];

NSLog(@"%@", myArray);

// => 2012-01-08 20:54:04.708 Untitled[4199:707] (null)
仅仅因为
myArray
持有指向
NSMutableArray
的指针,并不意味着您实际上拥有一个

因此,您上次分配给
self.items
的时间是:

self.items = [NSMutableArray arrayWithContentsOfFile:[self itemsp]];
这意味着
[NSMutableArray arraywhithcontentsoffile:[self itemsp]]
返回
nil
,因为
NSLog(@“%@”,self.items)
打印
(null)
因此,永远不会创建
self.items
NSMutableArray。唯一可能发生的方法是

self.items = [NSMutableArray arrayWithContentsOfFile:[self itemsp]];
返回nil,即不读取任何内容,可能是因为路径中没有任何内容

NSLog
self.items
就在语句之后:

self.items = [NSMutableArray arrayWithContentsOfFile:[self itemsp]];

如果您试图写入无法工作的应用程序包,则需要写入一个目录,例如沙盒文档目录

我告诉过你这只是代码的一部分,路径是:-(NSString*)itemsp{NSString*path=[NSString stringWithFormat:@“%@%@”,[[NSBundle mainBundle]resourcePath],@“items.plist”];我稍后会将内容添加到颜色中,它不会添加…它不会添加我的问题是数组有什么问题如果您需要更多信息,请告诉我您需要什么,我会发布它,但它不会回答这是否实际返回了有效路径,以及文件是否可以解析为
NSArray
包是只读的,以便I’我不会将文件写入磁盘。您的想法是在此网站上询问一个问题以寻求帮助。您似乎对解决此问题不感兴趣,因为您只是忽略了这些建议。最后分配给
self.items
的是
[NSMutableArray arrayWithContentsOfFile:[self-itemsp]];
因此,如果文件不存在或无法解析,则最有可能为零。@user1014334--您不能将对象添加到不存在的数组中!PYHOOYA!该路径存在,我知道,因为当我将模拟器从5更改为4.3时,它会输入一些我在保存到其中的代码中没有添加的对象路径中的文件。如果路径不正确,则说明该行不起作用的原因:[self.items addObject:@“chair”];在NSlog的正上方不会添加任何对象?你从我在设备上建议的NSlog中得到了什么?基本上你认为你的代码是正确的,同时它不工作,两个参数不可能都是正确的。我仍然得到null,我只说代码与ios5不兼容,我不确定。明白吗还有什么想法吗?@user1014334您的代码通常是错误的,而且非常乐观。请阅读并学习一些关于防御编程的知识。它在iOS4上工作,但在iOS5上失败,这并不一定意味着您发现了iOS5的不兼容。这也可能意味着您以前很幸运,而现在您面临着一个事实:糟糕的代码.听着,我是一个初学者,我知道我的代码并不惊人,也不太好,我会尝试你的建议,但现在我不在家……你显然对你正在做的事情一无所知。更新
viewDidLoad
末尾的字段有什么好处?你意识到
arraywhithcontentsoffile
可以恢复吗零?