EXC_BAD_ACCESS类型NSString的错误

时间:2013-04-09 10:14:01

标签: objective-c nsstring nsobject

我是这个mac应用程序开发的新手。

该应用程序适用于某些数据,并且应用程序因少数条目而崩溃。

-(void)presentClientsss
{
    [productVendorTextField setStringValue:[NSString stringWithFormat:@"%@", [[popUpVendor selectedItem] title]]];

    NSMenuItem *tempMenuItem = [popUpVendor selectedItem];
    NSString *selectedItemTitle = [tempMenuItem title];

    for (int k = 0; k < [appDelegate.vendorInfoArr count]; k++)
    {
        VendorInfo *tempCustomerInfoModel = [appDelegate.vendorInfoArr objectAtIndex:k];

        if ([tempCustomerInfoModel.vendorName isEqualToString:selectedItemTitle])
        {
            oldVendorIde = [NSString stringWithFormat:@"%ld", tempCustomerInfoModel.rowId];

            NSLog(@"Selected RowID = %@",oldVendorIde);

            break;
        }
    }
}

我将oldVendorIde字符串发送到下一个方法。

- (ItemModel *)itemNodelWithAttributes {
    isProductIdExist = NO;

    if ([senderInfo isEqualToString:@"nP"]) {
        for (int i = 0; i < [appDelegate.itemsArr count]; i++) {
            ItemModel *tempIM = [appDelegate.itemsArr objectAtIndex:i];
            if ([tempIM.productId isEqualToString:[[productIdTextField stringValue] uppercaseString]]) {
                isProductIdExist = YES;
                break;
            }
        }
    }

    if ([senderInfo isEqualToString:@"eP"])  {
        for (int i = 0; i < [appDelegate.itemsArr count]; i++) {
            ItemModel *tempIM = [appDelegate.itemsArr objectAtIndex:i];
            if (tempIM.itemId == itemIdentity) {
                if ([tempIM.productId isEqualToString:[[productIdTextField stringValue] uppercaseString]]) {
                    isProductIdExist = NO;
                }
            }
            else if ([tempIM.productId isEqualToString:[[productIdTextField stringValue] uppercaseString]]) {
                isProductIdExist = YES;
            }
        }
    }
    int tempItemExists = [self saveProductImage:[[productIdTextField stringValue] uppercaseString]];

    NSLog(@"oldVendorIde =%@",oldVendorIde);
    ItemModel *iM = [[ItemModel alloc] initWithItemId:itemIdentity defaultItemMinimumValue:[productMinValueTextField floatValue] staticItemPrice:[productPriceTextField doubleValue] dynamicItemQuantity:[productCurrentStockTextField doubleValue] staticItemDescription:[productDescriptionTextField stringValue] prodId:[[productIdTextField stringValue] uppercaseString] itemVendor:oldVendorIde itemImgExists:tempItemExists stockAvailable:0 itemNotes:[notesTextField string] BarcodeDesc:[BarcodeDescTextView stringValue]];

    return iM;
}

在这种方法中,相同的oldVendorIde对某些数据工作正常,有时候它会在此时崩溃。

有时候oldVendorIdeitemNodelWithAttributes方法中没有任何值,应用程序崩溃了。

可以帮助我解决问题..提前致谢..

1 个答案:

答案 0 :(得分:0)

来自UITextField的文字可通过text属性([productIdTextField text])访问,而不是通过stringValue访问。