내지도에 주석 정보를 채우기위한 plist가 있습니다. 서버에서 읽을 때 모든 작업 & plist 파일의 복사본이 문서 경로에 만들어집니다. 인터넷 연결이 없는데도 문서 경로에서 내 plist를 읽으려고하는데 작동하지 않습니다. 인터넷에 연결되어 있지 않아도 작동하지만 문서에서는 안되는 경우 번들로 코드를 작성하고 있습니다. (내 Dropbox에서 plist 파일의 경로에 대한 질문 만 변경했습니다.) 내 코드가 잘못되었습니다. 도움을 주셔서 감사합니다.문서에서 plist를 읽습니다.
- (void) showMap
{
storsInfosArr = [[NSArray alloc]initWithContentsOfURL:
[NSURL URLWithString:@"http://dl.dropbox.com/u/4082823/AppsFiles/test.plist"]];
NSString *error;
NSString *rootPath =
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"test.plist"];
NSArray *tmpArr = [NSArray arrayWithArray:storsInfosArr];
NSData *tmpData = [NSPropertyListSerialization dataFromPropertyList:tmpArr format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];
if(tmpData)
{
[tmpData writeToFile:plistPath atomically:YES];
}
else
{
NSLog(@"%@",error);
}
//Check if the array loaded from server is not complete, load from docs:
if(tmpArr.count == 0)
{
NSString *rootPath =
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"stores.plist"];
NSLog(@"docsPlistPath = %@",plistPath);
// Build the array from the plist
NSMutableArray *tmpArray = [[NSMutableArray alloc] initWithContentsOfFile:plistPath];
self.storsInfosArr = tmpArray;
}
for (NSDictionary *currStoreDict in storsInfosArr)
{
StoreAnnotation *stAnnotation = [[StoreAnnotation alloc] initWithDictionary:currStoreDict];
[myMapView addAnnotation:stAnnotation];
}
myMapView.showsUserLocation = YES;
CLLocationCoordinate2D tmpCoord2d = {31.48489338689016, 35.5517578125};
MKUserLocation *userLocation = myMapView.userLocation;
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.location.coordinate,390000.0, 390000.0);
[myMapView setRegion:region animated:NO];
myMapView.mapType = MKMapTypeStandard;
self.myMapView.centerCoordinate = tmpCoord2d;
}
고마워요.하지만 self.dataDictonary = tempDict에 오류가 있습니다. dataDictionary는 무엇입니까? 그게 뭐야 .. 사전 변수가 없다면 –
dataDicitionary는 plist의 루트 요소에 액세스하는 데 사용되는 변수입니다. 루트 요소는 plist 내의 나머지 값에 액세스 할 수 있습니다. – Ram