0

この 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、一部のデータに対して同じことが正常に機能し、この時点でクラッシュすることがあります。

oldVendorIdesometime はメソッドで値を取得せず、itemNodelWithAttributesその時点でアプリがクラッシュします。

ソーンは問題を解決するのを手伝ってもらえますか..事前に感謝します..

4

1 に答える 1