簡體   English   中英

由於未捕獲的異常“ NSInvalidArgumentException”而終止應用程序

[英]Terminating app due to uncaught exception 'NSInvalidArgumentException'

我已經完成了自己的項目。 因此,我在模擬器上對其進行了測試,一切正常。 但不幸的是,該項目無法在我的真實iPhone上運行。 發生此錯誤:

"Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSFileManager copyItemAtPath:toPath:error:]: source path is nil'"

是什么原因? 這是我使用的一些代碼:

RootViewController *rootViewController;
...
- (void) startApp;
{
   [rootViewController init];           // error occured
}

RootViewController是項目簡單文件之一。

void Game::readData() 
{

    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //1
    NSString *documentsDirectory = [paths objectAtIndex:0]; //2
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"GameInfo.plist"]; //3

    NSFileManager *fileManager = [NSFileManager defaultManager];

    if (![fileManager fileExistsAtPath: path]) //4
    {
        NSString *bundle = [[NSBundle mainBundle] pathForResource:@"GameInfo" ofType:@"plist"];

        [fileManager copyItemAtPath:bundle toPath: path error:&error]; //6
    }

    NSMutableDictionary *savedStock = [[NSMutableDictionary alloc] initWithContentsOfFile: path];

    //load from savedStock example int value
    gameMaxLevel = [[savedStock objectForKey:@"GameMaxLevel"] intValue];

    [savedStock release];

}

無效Game :: readData(){

NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //1
NSString *documentsDirectory = [paths objectAtIndex:0]; //2
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"GameInfo.plist"]; //3

NSFileManager *fileManager = [NSFileManager defaultManager];

if (![fileManager fileExistsAtPath: path]) //4
{
    NSString *bundle = [[NSBundle mainBundle] pathForResource:@"GameInfo" ofType:@"plist"];

    [fileManager copyItemAtPath:bundle toPath: path error:&error]; //6
}

NSMutableDictionary *savedStock = [[NSMutableDictionary alloc] initWithContentsOfFile: path];

//load from savedStock example int value
gameMaxLevel = [[savedStock objectForKey:@"GameMaxLevel"] intValue];

[savedStock release];

}

檢查您的GameInfo.plist存在於應用程序的資源中,並且是否位於應用程序文件夾中(如果要在兩個或更多設備上執行代碼)。 如果問題仍未解決,請共享完整的異常日志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM