小编Jer*_*aho的帖子

删除 iOS 联系人组

有人尝试使用 iOS 9 联系人框架删除现有的联系人组吗?

我初始化联系人存储并请求联系人组列表,这为我提供了一组CNGroup实例:

var groups: [CNGroup]?

do {
    self.groups = try contactStore.groupsMatchingPredicate(nil)
}
catch { ... }
Run Code Online (Sandbox Code Playgroud)

然后我在表格视图中显示这些组。当用户滑动表格视图单元格时,我想从联系人存储中删除相应的组。

但是, 的deleteGroup方法CNContactStore需要一个CNMutableGroup实例,而不是一个CNGroup. Xcode 给了我一个错误:

Cannot convert value of type 'CNGroup' to expected type 'CNMutableGroup'
Run Code Online (Sandbox Code Playgroud)

显然,如果我尝试将CNGroup实例转换为 a CNMutableGroup

let saveRequest = CNSaveRequest()
saveRequest.deleteGroup(group as! CNMutableGroup)
do {
    try contactStore.executeSaveRequest(saveRequest)
}
catch { ... }
Run Code Online (Sandbox Code Playgroud)

我在运行时崩溃:

Could not cast value of type 'CNGroup' (0x370890f8) to 'CNMutableGroup' (0x370899f4)
Run Code Online (Sandbox Code Playgroud)

我意识到这是因为CNGroup …

ios cncontactstore

3
推荐指数
1
解决办法
1123
查看次数

无法从SQLiteCursorLoader转换为Loader <Cursor>

我正在使用基于ActionBarSherlock的活动和片段.要从SQLite数据库中读取行,我正在尝试使用a Loader而不是a ContentProvider,我正在尝试让LoaderEx为我工作.

我遇到了一个顽固的问题:在我的片段onCreateLoader回调中,ADT一直给我一个错误:

"Cannot convert from SQLiteCursorLoader to Loader<Cursor>"
Run Code Online (Sandbox Code Playgroud)

我正在使用Android v4支持库.由于DEX错误,我已从android-support-v4.jarActionBarSherlock和LoaderEx中删除,并将其添加到我的基础项目中.然后我让ABS和LoaderEx都依赖于此.

ABS和LoaderEx都作为库项目添加.

我已经检查过我只使用v4导入.LoaderExDemo也可以在模拟器中编译和工作.

这些是我片段的导入:

import com.actionbarsherlock.app.SherlockListFragment;

import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v4.app.LoaderManager;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;

import com.commonsware.cwac.loaderex.SQLiteCursorLoader;
Run Code Online (Sandbox Code Playgroud)

这是我的片段声明:

public class MeetingListFragment 
        extends SherlockListFragment 
        implements LoaderManager.LoaderCallbacks<Cursor> {
    private JournalDatabaseHelper db = null;
    private SimpleCursorAdapter adapter = null;
    private SQLiteCursorLoader loader = null;
Run Code Online (Sandbox Code Playgroud)

这是getLoader回调方法:

public Loader<Cursor> onCreateLoader(int loaderId, Bundle args) …
Run Code Online (Sandbox Code Playgroud)

android android-fragments actionbarsherlock android-cursorloader commonsware-cwac

1
推荐指数
1
解决办法
565
查看次数