当前位置:  编程技术>移动开发
本页文章导读:
    ▪CoreData-实现数据永久性保存时产生的有关问题        CoreData-实现数据永久性保存时产生的问题在使用coredata 的时候,需要永久性保存数据, 使用 NSManagedObjectContext 的 sava: 方法来实现。 在这个过程中发现各种不能保存,于是乎花了两天的时候.........
    ▪ CoreData-processPendingChanges跟save        CoreData-processPendingChanges和save ......
    ▪ 设立TextView中文字的超链接       设置TextView中文字的超链接main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="matc.........

[1]CoreData-实现数据永久性保存时产生的有关问题
    来源: 互联网  发布时间: 2014-02-18
CoreData-实现数据永久性保存时产生的问题

在使用coredata 的时候,需要永久性保存数据, 使用 NSManagedObjectContext 的 sava: 方法来实现。

在这个过程中发现各种不能保存,于是乎花了两天的时候来解决它,搜寻各种办法,不过找到的办法无数却始终解决不了我的问题,最后发现了我的问题所在,却让我哭笑不得。

总结在保存的时候遇到问题的解决办法:

1、使用了多个线程操作同一个 NSManagedObjectContext对象

最好是每个线程用一个 NSManagedObjectContext对象


2、NSManagedStoreCoordinator 有缓存数据,需要重新填充

[managedObjectContext setStalenessInterval:0.0]; //强制性从磁盘装载


3、NSManagedObjectContext 合并政策失败的核心数据是无法完成合并

[managedObjectContext setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];//设置上下文对象合并


4、数据库的路径问题

检查数据库路径是否正确


5、更新了数据库结构

需要从模拟器或真机上删除项目,并clean 重新编译


6、存储的类型和数据库中定义的类型不匹配问题


最后说说我的问题: 使用coredata 在项目中建立表,它会自己来生成数据库,而在每个表中都有它自己生成的Z_PK,Z_ENT,Z_OPT 这三个字段,

Z_PK     表的主键,从1开始递增, 具有唯一性

Z_ENT  表在xcdatamodel 中的索引值,如果有6个表那么它的值的区间就是[1,6 ]

Z_OPT  表示的是每条数据被操作的次数,初始化值为1,只要是增删改查都会加1

而我在为了测试我的程序,自己去找到了数据库填写了数据,以至于 z_ent 和 z_opt这两个值未填写,导致了我保存数据时的各种不通过,

而用代码插入的数据 是会自动为这两个字段赋值的,这让我郁闷了很久,这次算是长记性了,在没有弄清这玩意的时候就算是测试数据也最好去用代码生成,不仅检测了代码也不会出现这种错误。。





    
[2] CoreData-processPendingChanges跟save
    来源: 互联网  发布时间: 2014-02-18
CoreData-processPendingChanges和save

processPendingChanges改变当前对象的状态图; 

processPendingChanges类似于告诉字处理器在文档的编辑后更新它的内部状态,但不保存到磁盘。多用于用户界面上 更新数据;

processPendingChanges常用在单独线程上运行多个上下文; 

 在MacOS下,它发挥了更大,更普遍的作用;


save保存到磁盘;

调用save将自动调用processPendingChanges;

在我们保存数据到数据库的时候常用 save方法;


save 和 processPendingChanges 都是 NSManagedObjectContext 类的方法;


    
[3] 设立TextView中文字的超链接
    来源: 互联网  发布时间: 2014-02-18
设置TextView中文字的超链接

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="期望有一天不用写代码也可以吃得起馒头" />

</RelativeLayout>


mainActivity如下:

package c.c;
import android.app.Activity;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.URLSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
/**
 * Demo描述:
 * 为TextView中的文字设置链接,当点击此链接的时候执行相应的操作
 */
public class MainActivity extends Activity {
    private TextView mTextView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}
    private void init() {
    	mTextView=(TextView) findViewById(R.id.textView);
    	String string = mTextView.getText().toString();
    	addUrlSpan(mTextView, string);
    	mTextView.setFocusable(true);
    	mTextView.setMovementMethod(LinkMovementMethod.getInstance());
		catchUrl(/blog_article/mTextView/index.html);
	}
    private class TestSpan extends ClickableSpan {
		private String url;
		TestSpan(String url) {
			this.url = url;
		}
		@Override
		public void onClick(View widget) {
			if (url.equals("showinfo")) {
				Toast.makeText(MainActivity.this, "点击了链接", Toast.LENGTH_SHORT).show();
				System.out.println("执行点击链接后的操作");
			}
		}
	}
	private void addUrlSpan(TextView tv, String string) {
		SpannableString spanString = new SpannableString(string);
		URLSpan span = new URLSpan("showinfo");
		int start = string.length() - 4;
		int end = string.length() - 1;
		spanString.setSpan(span, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
		tv.setText(spanString);
	}

	private void catchUrl(/blog_article/TextView textView/index.html) {
		CharSequence text = textView.getText();
		if (text instanceof Spannable) {
			int end = text.length();
			Spannable sp = (Spannable) textView.getText();
			URLSpan[] urls = sp.getSpans(0, end, URLSpan.class);
			SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(text);
			spannableStringBuilder.clearSpans();

			for (URLSpan url : urls) {
				TestSpan testSpan = new TestSpan(url.getURL());
				spannableStringBuilder.setSpan(testSpan, sp.getSpanStart(url),
				sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
			}
			textView.setText(spannableStringBuilder);
		}
	}
	
}


 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
nosql iis7站长之家
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3