2016-09-08 2 views
0

서버 응답을 받았지만 plist에 저장하려고했지만 plist 파일이 작성되지 않았습니다.Plist가 Objective C로 작성되지 않았습니다

나는 파일 경로와 사전 내용을 기록했지만 이러한 모든 데이터는 여전히 방법

-(void)sideMenu:(NSString *)title{ 

    NSString *myRequestString = [[NSString alloc] initWithFormat:@"data=%@&deviceid=e8ef8c98262185ec",title]; 

    NSData *myRequestData = [NSData dataWithBytes:[myRequestString UTF8String ] length: [ myRequestString length ] ]; 

    NSMutableURLRequest *request = [ [ NSMutableURLRequest alloc ] initWithURL: [ NSURL URLWithString:SIDE_MENU]]; 
    [request setHTTPMethod:@"POST"]; 
    [request setHTTPBody: myRequestData]; 
    NSURLResponse *response; 
    NSError *err; 
    NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse:&response error:&err]; 
    NSString* responseString = [[NSString alloc] initWithData:returnData encoding:NSNonLossyASCIIStringEncoding]; 
    NSArray *myArray = [responseString componentsSeparatedByString:@"<!DOC"]; 
    //NSLog(@"%@",myArray); 
    if (myArray != nil || [myArray count] > 0) { 
     NSData *data = [[[myArray objectAtIndex:0]stringByReplacingOccurrencesOfString:@"\n" withString:@""] dataUsingEncoding:NSUTF8StringEncoding]; 
     id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 
     [self sideMenuFile:title :json]; 
    } 



} 




-(NSString *)sideMenuFile:(NSString *)titleName :(NSDictionary *)dict{ 
    NSString *filePath; 
    MyManager *sharedManager =[MyManager sharedManager]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    if([titleName isEqualToString:@"ML"]) 
    { sharedManager.sideMenu = [[NSDictionary alloc]init]; 
     sharedManager.sideMenu = dict; 
     filePath = [documentsDirectory stringByAppendingPathComponent:@"ML.plist"]; 
    }else if ([titleName isEqualToString:@"HM"]){ 
     filePath = [documentsDirectory stringByAppendingPathComponent:@"HM.plist"]; 

    }else if ([titleName isEqualToString:@"PDC"]){ 
     filePath = [documentsDirectory stringByAppendingPathComponent:@"PDC.plist"]; 

    }else if ([titleName isEqualToString:@"SM"]){ 
     filePath = [documentsDirectory stringByAppendingPathComponent:@"SM.plist"]; 

    }else if ([titleName isEqualToString:@"GL"]){ 
     filePath = [documentsDirectory stringByAppendingPathComponent:@"GL.plist"]; 

    }else if ([titleName isEqualToString:@"CU"]){ 
     filePath = [documentsDirectory stringByAppendingPathComponent:@"CU.plist"]; 

    }else if ([titleName isEqualToString:@"BR"]){ 
     filePath = [documentsDirectory stringByAppendingPathComponent:@"GL.plist"]; 

    } 

    NSLog(@"%@",filePath); //printing path 
    [dict writeToFile:filePath atomically:YES]; 

    NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil; 

    NSString *plistName = @"GL"; 
    NSString *finalPath = [basePath stringByAppendingPathComponent: 
          [NSString stringWithFormat: @"%@.plist", plistName]]; 

    NSDictionary *dictww=[[NSDictionary alloc]initWithContentsOfFile:finalPath]; 




    NSLog(@"dict%@",dictww); //printing nill 


    return filePath; 
} 

JSON 파일 구조

{ 
    sigallery =  { 
     rows =   (
         { 
       active = True; 
       gallerytext = "<null>"; 
       galleryurl = "assets/img/content-images/1.jpg"; 
       moddt = "2016-07-19T12:28:18.873"; 
       onclickurl = "testd.in"; 
       settingsid = 1; 
       showfromdt = "1901-01-01T00:00:00.0"; 
       showsequence = 1; 
       showuptodt = "2099-12-31T00:00:00.0"; 
       videoimagebanneraudioswitch = I; 
      }, 
         { 
       active = True; 
       gallerytext = "<null>"; 
       galleryurl = "assets/img/content-images/2.jpg"; 
       moddt = "2016-07-19T12:28:18.873"; 
       onclickurl = "testd.in"; 
       settingsid = 1; 
       showfromdt = "1901-01-01T00:00:00.0"; 
       showsequence = 2; 
       showuptodt = "2099-12-31T00:00:00.0"; 
       videoimagebanneraudioswitch = I; 
      } 
      ) 
      } 
      } 
+0

참조 - http://stackoverflow.com/questions/12170871/how-to-add-a-key-value-pair-to-a-plist-file-in-objective-c 및 http : // stackoverflow .com/questions/23867337/i-save-retrieve-delete-update-my-data-in-plist-file-in-ios – Signare

+0

[finalPath isEqualToString : filePath]? 메서드 선언/sideMenuFile : noTextHere :는 권장하지 않습니다. – Larme

답변

0

이 다음 호출합니다

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    [self sideMenu:@"ML"]; 

    return YES; 
} 

를 작성하지 PLIST이 귀하의 코드는 여러 가지 최적이 아닌 가정을합니다. 그것이 가능한 경우 파일을 쓸 때마다

1)

, 당신은 항상 오류 조건에 대해 확인해야합니다. NSDictionary와의 writeTo... 방법은 파일에 기입되었는지의 여부를 부울을 반환 할, 그래서 당신은 할 수 있습니다 : 당신이 읽을 때

NSLog(@"%@",filePath); //printing path 
BOOL success = [dict writeToFile:filePath atomically:YES]; 
if (success == false) 
{ 
    NSLog(@"did not successfully write dictionary to path %@", filePath); 
} else { 
    // ... do everything else in here 
} 

2)

당신은 형식 titleName + GL | PDC | SM.plist WIH 파일을 쓰기 만 다시 들어가면 finalPath의 일부로 titleName이 없으므로 여기서 아무 것도 표시되지 않습니다.

3) 또한

, 왜 basePath이 (가 nil이 될 수 것 같습니다) 유효 생각합니까?