Titanium Mobile을 사용하여 아이폰/Android 응용 프로그램 개발(09) - 데이터 저장
5232 단어 APPmobileTitaniumappcelerator
응용 프로그램에서 사용하는 데이터는 프로그램이 끝난 후에도 저장할 수 있는 방법에 대해 이야기합니다.구체적으로는 저희 트위터 클라이언트 앱에서 보낼 Tweet이 편집 중일 때 앱이 끝난 후에도 편집 중인 내용을 다음에 편집할 수 있습니다.아이폰 앱에서는 사용자의 부주의한 조작, 메모리의 자동 방출 등으로 무의식 중에 프로그램이 종료되면 저장되지 않은 데이터도 사라진다.그래서 편집 중의 데이터를 저장하는 것이 매우 중요하다.
먼저 입력한 Tweet의 코드를 다음과 같이 저장합니다(또는 이전 메시지 window.js에 코드를 추가하는 경우).
win.addEventListener(
'close',
function(){
var text = textArea.value;
Ti.App.Properties.setString('previousText', text);
}
);
win.addEventListener(
'open',
function(){
var text = Ti.App.Properties.getString('previousText');
if ( text ) {
textArea.value = text;
}
}
);
윈도우가 닫힐 때 윈도우의textarea 등 UI 컨트롤러가 입력한 내용이 사라지기 때문에 윈도우의close 이벤트에 감청 이벤트를 추가하여 입력한 데이터를 저장합니다.
여기서 우리가 사용하는 방법은 Titanium입니다.App.Properties.
Titanium.App.Properties는 키 값을 관리하기 위해 데이터에 매우 편리한 대상이다.데이터를 저장할 때 Ti.App.Properties.setString에 대응하는 키의 값에 저장할 값을 설정하면 됩니다.반대로 값을 얻을 때 Ti를 통과한다.App.Properties.getString 메서드, 원하는 Key 값을 가져옵니다.setString과 getString은 문자열을 설정하는 방법으로 다른 데이터 형식과 유사합니다.특히 자바스크립트 대상을 그대로 저장하려면 JSON 등 처리를 통해 대상을 서열화한 후 저장해야 한다.
String 이외의 값에 대해서는 위치 정보를 저장하여 다음과 같이 설명합니다.
win.addEventListener(
'close',
function(){
var text = textArea.value;
Ti.App.Properties.setString('previousText', text);
if (mapview.visible) {
var loc = mapview.location;
var locationList =
[loc.latitude,loc.longitude,loc.latitudeDelta,loc.longitudeDelta];
Ti.App.Properties.setList('locationList', locationList);
}
}
);
win.addEventListener(
'open',
function(){
var text = Ti.App.Properties.getString('previousText');
if ( text ) {
textArea.value = text;
}
if ( Ti.App.Properties.hasProperty('locationList') ) {
var locationList = Ti.App.Properties.getList('locationList');
mapview.show();
mapview.setLocation(
{
latitude : locationList[0],
longitude : locationList[1],
latitudeDelta : locationList[2],
longitudeDelta : locationList[3]
}
);
}
}
);
이 예에서 맵뷰에 설정할 4개의 위치에 대한 정보 값을 데이터로 바꾸어 저장할 수 있습니다.대상을 그대로 저장하는 것은 안 되지만, 값이 많으면 수조로 저장할 수 있다.
Key의 가치가 있는지 판단하려면 Ti를 사용할 수 있습니다.App.Properties.hasProperty.
파일 저장
위의 예에서 우리는 Ti를 사용했다.App.Properties에서 데이터를 저장했습니다.Titanium에서도 파일을 쉽게 읽고 쓸 수 있습니다.다음 예에서는 데이터를 파일에 저장하는 방법을 보여 줍니다.
var fileName = 'tweet.txt';
win.addEventListener(
'close',
function(){
var text = textArea.value;
var loc;
if (mapview.visible) {
loc = mapview.location;
}
var json = JSON.stringify({previousText:text,location:loc});
var file = Ti.Filesystem.getFile(
Titanium.Filesystem.resourcesDirectory + '/' + fileName
);
file.write(json);
}
);
win.addEventListener(
'open',
function(){
var file = Ti.Filesystem.getFile(
Titanium.Filesystem.resourcesDirectory + '/' + fileName
);
var json = file.read();
if ( !json || json.length <= 0) {
return;
}
var data = JSON.parse(json);
var text = data.previousText;
var location = data.location;
if ( text ) {
textArea.value = text;
}
if ( location ) {
var locationList = Ti.App.Properties.getList('locationList');
mapview.show();
mapview.setLocation(location);
}
}
);
파일을 쓸 때 주의해야 할 점은 파일 핸들을 가져오는 방법은Titanium입니다.Filesystem.getFile.
그중의 매개 변수는 바로 파일의 경로다.
Titanium.Filesystem.resourcesDirectory + '/' + fileName
여기에서 우리는 ResourcesDirectory를 통해 파일 경로를 지정하고 그에 상응하는 다른 읽기와 쓰기 경로를 지정한다.Titanium도 여러 가지를 제공하는데 여러분들은 API를 찾아볼 수 있다.
파일에 개체의 데이터를 기록할 때도 마찬가지로 JSON을 통해 서열화됩니다.
Titanium에서는 JSON의 서열화(stringify)와 반서열화(parse) 방법을 제공합니다.위의 예에서 여러분은 구체적인 용법을 보실 수 있습니다.
이미지 저장
Tweet의 편집 페이지에서 우리는 하나의 이미지를 표시했다. 지금까지 우리는 모두 앨범에서 선택한 그림을 통해 사진 자체를 앨범에 저장했지만 카메라를 통해 사진을 찍으면 사진을 앨범에 저장해야 한다.
Titanium.Media.saveToPhotoGallery(image)
위 코드를 통해 이미지 이미지를 앨범에 저장할 수 있습니다.
var file = Ti.Filesystem.getFile(
Titanium.Filesystem.resourcesDirectory + '/' + fileName
);
file.write(image)
물론 이런 방법으로 이미지를 파일로 저장할 수도 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ural(Timus) 1463. Happiness to People!트리 DP 제목: n과 m를 입력하면 n개 도시를 나타내고 m조는 방향이 없고 다음 줄은 n개의 숫자를 나타내며 각 도시의 권한을 나타낸다. 다음 m줄은 각 변의 정보, u, v, w, 정점과 변권이다.한 도시에서 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.